SQLite:中小型Web应用的完美数据库选择

发表时间: 2021-04-16 14:29

SQLite是包含在C语言库中的关系数据库管理系统。它符合ACID,并实现了大多数SQL标准。

作为用于存储在应用软件(例如Web浏览器和手机)中的嵌入式数据库软件,它是一种流行的选择,并且它是世界上部署最广泛的数据库引擎。但是,与流行的看法相反,SQLite不仅在嵌入式设备中有用。每当您建立一个不需要扩展到多台计算机的网站时,在大多数情况下,仅使用SQLite都可以,而且不仅如此,而且您会发现使用SQLite变得更加容易。

与许多其他数据库管理系统相比,SQLite并不是客户端服务器数据库引擎,但是实际上您很少需要它。如果您的应用程序软件与数据库在同一台物理机上运行,​这是大多数中小型Web应用程序所做的,那么您可能只需要SQLite。

多个进程或线程可以同时访问同一数据库,并且读取访问可以并行运行。由于数据库由单个文件组成,因此仅当当前没有其他访问权正在写入数据库时​​,才可以满足写访问权。但是,在设置了可配置的busy_timeout并启用了预[url=
https://sqlite.org/wal.html]写日志记录(WAL)的情况下[/url],SQLite启用了并发读取和写入。这意味着写入排队。每个应用程序都会快速完成其数据库的工作并继续运行,并且锁定不会持续超过几毫秒。

SQLite的速度非常快,而且有据可查。

即使您刚开始规模较小但以后需要升级,只要您的Web应用程序可以与数据库在同一台计算机上运行(它可以在99%的时间内运行),就可以将硬件升级到功能更强的计算机并保持照常营业。

您唯一需要考虑的客户端服务器设置是:

  • 您有多台物理机通过网络访问同一数据库服务器的位置。在此设置中,您有多个客户端之间的共享数据库。
  • 如果您的计算机极度忙于写操作,例如每秒接受成千上万的同时写请求,那么您还需要客户端服务器设置,因为专门构建了客户端服务器数据库来处理该问题。
  • 如果您使用的是非常大的数据集,例如TB级。客户端-服务器方法更适合大型数据集,因为数据库会将文件拆分为较小的文件,而SQLite仅适用于单个文件。

我已经将SQLite作为Web应用程序数据库运行,每秒有数千个并发写入,它们来自不同的HTTP请求,而没有任何延迟或问题。这是因为即使在非常繁忙的站点上,硬件也非常快并且完全能够处理该问题。

但是,您可能会问,SQLite有什么优点呢?

好吧,首先,所有数据库管理任务变得更加容易。您不需要任何数据库帐户管理,数据库只是一个文件。

此外,您不需要运行需要监视的单独的数据库进程。如果您的应用程序已启动,则您的数据库也已启动!

您可以将数据库分为多个单独的数据库,甚至可以在服务器上为每个用户提供自己的数据库。根据应用程序类型,您可以有一个包含所有用户帐户信息(例如用户名和密码)的数据库,并将其用于登录会话,但是一旦确认登录,就可以使用另一个个人数据库来完成工作。

备份SQLite也非常容易,只需复制文件即可!您甚至可以在访问数据库时执行此操作。

需要特别注意两点,即AUTOINCREMENT命令是与其他数据库不同的,并且SQLite使用动态且弱类型的SQL语法不能保证域完整性。SQLite中的AUTOINCREMENT目的是防止重复使用先前删除的行中的ID。动态和弱类型SQL语法意味着您可以将字符串插入定义为整数的列中。SQLite将尝试在适当的情况下尝试在格式之间转换数据,在这种情况下,将字符串“ 123”转换为整数,但它不保证会进行此类转换,如果无法进行转换,则会按原样存储数据。这不是错误,但被认为是一项功能。