【外评】为什么 SQLite(在生产中)的声誉如此糟糕?
SQLite 和其他数据库一样,各有利弊。对于大多数应用和规模而言,它是完美的。对于其他任何应用,您都可以使用 PostgreSQL。
为什么?
- 大多数人都是从网络工作负载的角度来看待这个问题的。通常,我们使用 PostgreSQL 等客户端-服务器数据库。但是,SQLite 在移动设备或嵌入式设备等许多其他情况下也能大显身手。
- 长期以来,SQLite 不允许并发写入和读取。WAL 模式改变了这一状况,在该模式下,一个写入器可以有多个读取器。
- 但您仍然不能拥有多个并发写入器。这立即让人们望而却步。您的工作负载可能需要,也可能不需要。
- SQLite 没有很好的备份和复制功能。这是一个大问题,但 Ben Johnson 通过 Litestream 改变了整个局面。我认为这是对 SQLite 生态系统最具影响力的贡献之一。
- 有些 ORM/库的默认设置非常糟糕。例如,不设置
PRAGMA busy_timeout。 - 有趣的小故事我开始学习 Django 编程时,文档直接说 SQLite 不适合用于生产。很长一段时间我都有这样的错误印象。后来我开始在自己的用例中使用它,才意识到其中的利弊。
SQLite 和其他数据库一样,各有利弊。对于大多数应用和规模而言,它是完美的。对于其他任何应用,您都可以使用 PostgreSQL。
TLDR: SQLite会给你一记耳光。你会没事的。
本文文字及图片出自 Why does SQLite (in production) have such a bad rep?
你也许感兴趣的: