sqlite数据库(默认的django数据库)足够好吗



我正在用django构建这个电子商务应用程序,我在想默认数据库(sqlite(是否足够好?我的django应用程序将有大约200种不同的产品,对于支付,我将使用stripe API。当应用程序启动时,我不希望有太多的流量,因为它是一个只适用于我居住的600万居民的国家的网站。那么我可以使用sqlite数据库吗?

尽管你的答案可能看起来是基于观点的,但正确的答案无论如何都不是。SQLite3是一个轻量级数据库,当您的项目很小并且不介意启动服务器时,它很常见。SQLite有以下优点和缺点(来源(

SQLite的优势

占地面积小:顾名思义,SQLite库非常轻量级。尽管它使用的空间因安装位置的系统而异,但它可能占用不到600KiB的空间。此外,它是完全独立的,这意味着不需要在系统上安装任何外部依赖项,SQLite就可以工作。

用户友好:SQLite有时被描述为"零配置"数据库,可以开箱即用。SQLite不作为服务器进程运行,这意味着它永远不需要停止、启动或重新启动,也不附带任何需要管理的配置文件。这些功能有助于简化从安装SQLite到将其与应用程序集成的路径。

可移植:与其他数据库管理系统(通常将数据存储为一大批单独的文件(不同,整个SQLite数据库存储在一个文件中。此文件可以位于目录层次结构中的任何位置,并且可以通过可移动介质或文件传输协议共享。

SQLite的缺点

有限并发:尽管多个进程可以同时访问和查询SQLite数据库,但在任何给定时间只有一个进程可以对数据库进行更改。这意味着SQLite比大多数其他嵌入式数据库管理系统支持更大的并发性,但不如MySQL或PostgreSQL等客户端/服务器RDBMS那么多。

无用户管理:数据库系统通常支持用户,或具有对数据库和表的预定义访问权限的托管连接。由于SQLite直接读取和写入普通磁盘文件,因此唯一适用的访问权限是底层操作系统的典型访问权限。这使得SQLite对于需要多个具有特殊访问权限的用户的应用程序来说是一个糟糕的选择。

安全性:在某些情况下,使用服务器的数据库引擎可以比像SQLite这样的无服务器数据库更好地保护客户端应用程序免受错误的影响。例如,客户端中的杂散指针不能损坏服务器上的内存。此外,由于服务器是一个单一的持久进程,因此客户端-服务器数据库可以比无服务器数据库更精确地控制数据访问,从而实现更细粒度的锁定和更好的并发性。

这取决于您将在哪里托管它。有些服务器不接受SQLite3作为数据库,需要更复杂的PostgreSQL(如Heroku(。但是,如果你是自己主持(例如Rapsberry Pi(,那么如果网站的流量很小,那就很简单了。

最新更新