尽管NoSQL数据库继续蓬勃发展,但关系型数据库仍然远未结束。但在关系型数据库中,有一个数据库在不断增长的同时,其他更成熟的数据库却付出了代价。是的,我说的是PostgreSQL。真正的问题不是为什么开发人员喜欢PostgreSQL,有很多原因可以解释。而是为什么开发人员现在如此喜欢它。
持续发展的时刻 PostgreSQL的复兴已经持续了几年,这是我多次写过的内容。它受欢迎的原因?有几个原因,正如顾问Tanel Poder所总结的:
- 丰富的功能集
- 极高的可扩展性(扩展、钩子)
- 开源
- “宽松”的开源许可证 事实是,这些特点已经存在了一段时间,而且远在PostgreSQL真正开始攀升受欢迎程度之前就已经如此(也许最能反映PostgreSQL相对于关系型数据库巨头增长率的是OnGres创始人Álvaro Hernández,他使用线性刻度图展示了PostgreSQL相对于传统关系型数据库的相对增长):
MySQL早期加入了开源关系型数据库的行列,但更多地用于构建初创网络,而不是取代主流企业数据库。MySQL最终被Oracle收购,这似乎并未减缓其发展,但可能降低了社区的热情。因此,随着时间的推移,MySQL相对于PostgreSQL不仅在流行度上下降,而且也相对于一批新兴的NoSQL数据库(如Amazon DynamoDB、MongoDB、Redis、Apache Cassandra等)下降。
无论如何,没有人质疑PostgreSQL的优秀性,以及它在偏好通用数据库的行业趋势中所扮演的角色。这并非新闻。新闻的是,现在人们争相进行现代化改造,而PostgreSQL在其中扮演的角色。
推动简化操作 尽管有各种各样的原因可供喜欢PostgreSQL的人选择,但也许有一个原因显得突出:它很简单。它并不一定比其他关系型数据库更易于学习或使用(甚至连训练过MySQL的新手都不太可能转向它)。但对于那些已经习惯了关系型数据库并希望摆脱昂贵的Oracle等数据库的人来说,PostgreSQL就是“简单按钮”。正如EDB首席执行官Ed Boyajian曾告诉我一样,大多数公司并不寻求搬迁和迁移,但他们会选择PostgreSQL来构建新的应用程序,因为他们已经在公司内部积累了几十年的Oracle、SQL Server和DB2的SQL/关系技能。
因此,即使对于他们的使用情况来说,另一种数据库模型实际上可能更好,他们也会选择“简单按钮”即使用PostgreSQL。正如前AWS工程师Dave Cuthbert所指出的那样,"更多应用程序使用关系型[数据库],是因为这是他们唯一掌握的工具"。
当然,在许多企业工作负载中,进行架构设计的人实际上并不是企业的雇员,而是作为顾问被雇佣。在最大的全球系统集成商中,人们已经具备了内建的关系型数据库经验,从我在行业人士的交谈中了解到,这往往是他们推动PostgreSQL的主要原因。
在大流行病期间和之后,企业需要大量现代化企业基础设施以使其更具敏捷性,并对快速变化的客户需求做出响应。这些全球系统集成商接手了现代化项目,并经常应用最容易部署的技术,从而为他们的服务赚取最高额的利润。我们可以讨论这是否实际上对于想要进行现代化改造的客户来说是最好的选择,但理解其中的基本逻辑并不难。
现在,如果你是我,为一家文档数据库公司工作,可以认为这种对关系型数据库的明显过度依赖更多地是惯性所致,而不是有意采用现代数据基础设施。在我看来,对于“为什么现在?”这个问题的回答很多都是“因为它很简单。”而不是因为它是最好的选择。
当然,“最好”是主观的,“因为它很简单”一直是从开源到云计算的主要推动因素。便利性是一种令人上瘾的东西。那些想要与PostgreSQL的“简单按钮”竞争的公司需要提出至少同样有吸引力的解决方案。与此同时,PostgreSQL似乎并没有侵蚀NoSQL数据库的市场份额,但它肯定是以牺牲关系型数据库的利益来实现增长的。