博客的朋友Michel在 Mastodon 上问了这个问题:
达到什么数量你会认为 Postgres 不值得,他需要太多的黑客攻击,而只是寻找替代品?
有几种不同的方式来阅读本文。
-
你的项目什么时候变得足够大,可以保证运行 Postgres 而不是 SQLite3 之类的东西?在此期间的开销是否太大?
-
什么时候你的项目对于单个 Postgres 安装来说变得太大,并且你需要某种形式的额外缓存或集群。
-
烤奶酪三明治。
第一点和第二点要求基于努力和规模进行价值判断和建议,这是可以理解的,这需要经验而不是原始数据。这是有道理的,因为不存在——也不可能存在——一个行业接受的界限,我们说好吧,这是你必须停止做 Y 并开始做 X 的点。这就是系统架构的乐趣!但我离题了。
我说这是最近的转变,但很少有情况下个人项目会达到需要 Postgres 的规模。事实是:
-
大多数个人项目使用 SQLite3、键值存储或纯文本都可以正常运行(尽管请确保在您信任的文件系统上运行它来维护完整性,例如 OpenZFS)。
-
我们为自己或我们启动的项目运行的数据库不太可能达到我们需要开始担心 Postgres 将如何执行的规模。不要让这一点溜走,但我什至不再为 Postgres 调整我的 ZFS 数据集。这都是过早的优化。
(我对此的唯一对比是 Nextcloud。它在“适当的”客户端-服务器数据库以外的任何东西上运行缓慢,即使如此,它也可能从缓存中受益)。
但我为什么要运行它呢?对我来说,一切都是为了方便。对一个数据库进行标准化,无论它是什么,都会让我的生活变得更轻松。我只需要维护一个数据库,需要担心一种 FreeBSD 监狱类型,我在一个系统上的经验可以直接翻译并帮助其他地方,并且我的所有维护脚本和备份目标在所有系统上都相同。它还让我在个人项目上走捷径,而我从来没有为客户做过这些,但让我的生活更轻松(咳嗽)。
我想这就是我经常在这里提出的最后一点:不要害怕把事情搞砸。即使诱惑存在,我们也不需要理性或证明我们所做的一切都是合理的。个人项目是评估我们是否能理解某件事或我们是否能“融为一体”的好方法。最坏的情况是,你意识到这不适合你,然后你就去做别的事情。但 Postgres 非常可爱。
作者: Ruben Schade ,悉尼,2025 年 2 月 14 日。
原文: https://rubenerd.com/limits-before-running-postgres-becomes-useful/