SQLite 的适当用途

SQLite 不能直接与客户端/服务器 SQL 数据库引擎(如 MySQL、Oracle、PostgreSQL 或 SQL Server)相比较,因为 SQLite 试图解决不同的问题。

客户端/服务器 SQL 数据库引擎努力实现企业数据的共享存储库。他们强调可扩展性、并发性、集中化和控制。SQLite 致力于为单个应用程序和设备提供本地数据存储。SQLite 强调经济、效率、可靠性、独立性和简单性。

SQLite 不与客户端/服务器数据库竞争。SQLite 与fopen()竞争

SQLite 运行良好的情况

客户端/服务器 RDBMS 可能工作得更好的情况

选择合适的数据库引擎的清单

  1. 数据是否通过网络与应用程序分离?→ 选择客户端/服务器

    关系数据库引擎充当减少带宽的数据过滤器。因此最好将数据库引擎和数据保持在同一个物理设备上,这样高带宽的引擎到磁盘的链接就不必遍历网络,只需要低带宽的应用程序到引擎的链接。

    但是 SQLite 是内置在应用程序中的。因此,如果数据位于与应用程序不同的设备上,则需要更高带宽的引擎到磁盘链接跨网络。这可行,但不是最理想的。因此,当数据位于与应用程序不同的设备上时,通常最好选择客户端/服务器数据库引擎。

    注意事项: 在此规则中,“应用程序”是指发出 SQL 语句的代码。如果“应用程序”是一个应用程序服务器,并且如果内容与应用程序服务器驻留在同一台物理机器上,那么 SQLite 可能仍然适用,即使最终用户在另一个网络跃点之外。

  2. 许多并发作家?→ 选择客户端/服务器

    如果许多线程和/或进程需要同时写入数据库(并且它们不能排队轮流),那么最好选择支持该功能的数据库引擎,这始终意味着客户端/服务器数据库引擎。

    SQLite 一次只支持每个数据库文件一个编写器。但在大多数情况下,写入事务只需要几毫秒,因此多个写入者可以简单地轮流进行。SQLite 将处理比许多人怀疑的更多的写入并发。尽管如此,客户端/服务器数据库系统,因为它们手头有一个长期运行的服务器进程来协调访问,通常可以处理比 SQLite 以往任何时候都多得多的写入并发。

  3. 大数据?→ 选择客户端/服务器

    如果您的数据增长到您感到不舒服或无法放入单个磁盘文件的大小,那么您应该选择 SQLite 以外的解决方案。SQLite 支持大小高达 281 TB 的数据库,假设您可以找到支持 281 TB 文件的磁盘驱动器和文件系统。即便如此,当内容的大小看起来可能会达到 TB 范围时,最好考虑使用集中式客户端/服务器数据库。

  4. 否则 → 选择 SQLite!

    对于具有低写入并发性和小于 1 TB 内容的设备本地存储,SQLite 几乎总是更好的解决方案。SQLite 快速可靠,无需配置或维护。它使事情变得简单。SQLite“正常工作”。