当今软件开发的最大趋势之一是PostgreSQL成为事实上的数据库标准。关于如何使用 PostgreSQL 做任何事情的博客文章已经有一些,但还没有一篇关于为什么会发生这种情况(更重要的是,为什么这很重要)的文章。
到目前为止!
01 PostgreSQL 正在成为事实上的数据库标准
02 一切都在变成计算机
03 PostgreSQL 的回归
04 解放自己,构建未来,拥抱 PostgreSQL
05 Timescale 最初是“用于时间序列的 PostgreSQL”
06 时间尺度超越时间序列
07 Timescale 现已“强大起来的 PostgreSQL”
08 尾声:尤达?
在过去的几个月里,“PostgreSQL for Everything”已经成为开发人员中越来越流行的战斗口号:
“PostgreSQL 不仅仅是一个简单的关系数据库;它是一个数据管理框架,有可能席卷整个数据库领域。“使用 Postgres 做一切”的趋势不再局限于少数精英团队,而是正在成为主流的最佳实践。”
(
“简化堆栈、减少移动部件、加快开发速度、降低风险并在初创公司中提供更多功能的一种方法是“使用 Postgres 做所有事情”。Postgres 可以取代多达数百万用户的许多后端技术,其中包括 Kafka、RabbitMQ、Mongo 和 Redis。”
(
(
“当我第一次听说 Postgres 时(当时 MySQL 占据绝对主导地位),有人向我描述说它是“那些数学书呆子制作的数据库”,然后我意识到:是的,这些人正是你想要制作数据库的人。”
(
来源 )
“它已经实现了惊人的回归。现在 NoSQL 已经死了,Oracle 拥有了 MySQL,那还有什么呢?”
(来源)
“Postgres 不仅仅是一个关系数据库。它是一种生活方式。”
(来源)
得益于其坚如磐石的基础,以及通过原生功能和扩展实现的多功能性,开发人员现在可以使用 PostgreSQL 进行一切工作,用简单直接的方式取代复杂、脆弱的数据架构:
这也许有助于解释为什么 PostgreSQL 去年在专业开发人员(60,369 名受访者)最受欢迎数据库排名中取代 MySQL 夺得榜首:
过去一年中,您在哪些数据库环境中进行过大量开发工作?明年您希望在哪些数据库环境中工作?超过 49% 的受访者回答 PostgreSQL。(
这些结果来自 2023 年 Stack Overflow 开发者调查。如果回顾过去,您会发现过去几年 PostgreSQL 的采用率稳步增长:
虽然 PostgreSQL 是 2020 年至 2022 年 Stack Overflow 开发者调查受访者第二喜欢的数据库,但它的使用率一直在稳步增长。资料来源:
这不仅仅是小型创业公司和业余爱好者的趋势。事实上,PostgreSQL 的使用在各种规模的组织中都在增加:
按公司规模划分的 PostgreSQL 使用百分比。(
在 Timescale,这种趋势对我们来说并不新鲜。我们信奉 PostgreSQL 已有近十年。这就是为什么我们在 PostgreSQL 上建立业务,为什么我们是
已经有一些博客文章介绍了如何使用 PostgreSQL 做所有事情,但是却没有一篇解释为什么会发生这种情况(以及更重要的是,为什么这很重要)。
到目前为止。
但要了解为什么会发生这种情况,我们必须了解更基础的趋势,以及这种趋势如何改变人类现实的根本性质。
我们的汽车、房屋、城市、农场、工厂、货币、物品等所有东西都正在变成计算机。我们也正在数字化。每年,我们都会将自己的身份和行为数字化:我们如何购物、如何娱乐、如何收藏艺术品、如何寻找问题的答案、如何交流和联系、如何表达自我。
22 年前,“普适计算”这个概念似乎很大胆。当时,我还是麻省理工学院人工智能实验室的研究生,正在研究我的
从那时起,很多事情都发生了变化。计算如今无处不在:在我们的办公桌上、在我们的口袋里、在我们的物品中,以及在我们的“云”中。这正是我们预测的。
但这些变化的二阶效应并非我们大多数人所预期的:
无处不在的计算带来了无处不在的数据。随着每台新计算设备的出现,我们收集了更多关于现实的信息:人类数据、机器数据、业务数据、环境数据和合成数据。这些数据充斥着我们的世界。
数据洪流导致数据库出现“寒武纪大爆发” 。所有这些新数据源都需要新的地方来存储它们。二十年前,可能只有五个可行的数据库选项。如今有几百个,其中大多数专门用于特定用例或数据,而且每个月都会出现新的数据库。
数据和数据库数量越多,软件就越复杂。为软件工作负载选择合适的数据库已不再是件容易的事。相反,开发人员不得不拼凑复杂的架构,这些架构可能包括:关系数据库(因为其可靠性)、非关系数据库(因为其可扩展性)、数据仓库(因为其能够提供分析服务)、对象存储(因为其能够廉价地归档旧数据)。这种架构甚至可能具有更专业的组件,例如时间序列或矢量数据库。
复杂性越高,构建时间越短。复杂的架构越脆弱,需要更复杂的应用程序逻辑,开发时间越少,开发速度越慢。复杂性不是好处,而是真正的成本。
随着计算变得越来越普遍,我们的现实也与计算更加紧密地交织在一起。我们把计算带入了我们的世界,也把自己带入了计算的世界。我们不再只是线下的身份,而是线上线下行为的混合体。
软件开发人员是人类在这个新现实中的先锋。我们正是构建塑造这个新现实的软件的人。
但现在开发人员面临着数据泛滥和数据库复杂性的困扰。
这意味着开发商不是在塑造未来,而是花费越来越多的时间来管理管道。
我们是怎么来到这里的?
计算无处不在,数据也无处不在。这并非一朝一夕就能实现的,而是几十年来层层叠加的结果:
每次浪潮都让计算机变得更小、更强大、更普及。每次浪潮都建立在前一次浪潮的基础之上:个人计算机是小型主机;互联网是联网计算机的网络;智能手机是连接到互联网的更小的计算机;云计算使计算资源的访问变得民主化;物联网是智能手机组件被重构为连接到云的其他物理事物的一部分。
但在过去二十年里,计算技术的进步不仅发生在物理世界,也发生在数字世界,反映了我们的混合现实:
随着每一波新的计算浪潮,我们都会获得有关混合现实的新信息来源:人类数字排放、机器数据、业务数据和合成数据。未来的浪潮将创造更多的数据。所有这些数据都推动了新浪潮,其中最新的浪潮是生成式人工智能,而生成式人工智能又进一步塑造了我们的现实。
计算浪潮并非孤立存在,而是像多米诺骨牌一样层层叠加。起初只是涓涓细流,很快就变成了数据洪流。然后,数据洪流又导致越来越多的数据库的创建。
所有这些新的数据源都需要新的地方来存储它们——或者数据库。
大型机始于
互联网的协作力量推动了开源软件的兴起,包括第一个开源数据库:
互联网还产生了大量数据,从而导致了第一个非关系型数据库(NoSQL)的出现:
2010 年左右,我们开始遇到一个临界点。在此之前,软件应用程序主要依赖于单一数据库(例如 Oracle、MySQL、PostgreSQL),选择相对容易。
但“大数据”规模越来越大:物联网推动了机器数据的兴起;由于 iPhone 和 Android 的出现,智能手机的使用量开始呈指数级增长,导致人类的数字垃圾量进一步增加;云计算使计算和存储的访问变得民主化,进一步加剧了这些趋势。最近,生成式人工智能通过创建矢量数据使这个问题变得更加严重。
随着收集的数据量不断增长,我们看到了专门数据库的兴起:
二十年前,可能有五种可行的数据库选项。如今,有
面对这种洪流以及存在各种权衡的专用数据库,开发人员别无选择,只能拼凑复杂的架构。
这些架构通常包括关系数据库(用于可靠性)、非关系数据库(用于可扩展性)、数据仓库(用于数据分析)、对象存储(用于廉价存档),以及用于这些用例的更专业的组件,例如时间序列或矢量数据库。
但复杂性越高,构建时间越短。复杂的架构越脆弱,需要更复杂的应用逻辑,开发时间越少,开发速度越慢。
这意味着软件开发人员没有时间构建未来,而是花费了太多时间维护管道。这就是我们今天的处境。
有一个更好的办法。
故事就在这里发生了转折。我们的主角不再是一个崭新的数据库,而是一个老牌数据库,它的名字只有核心开发人员才会喜欢:PostgreSQL。
起初,PostgreSQL 排在第二位,远远落后于 MySQL。MySQL 更易于使用,背后有一家公司支持,而且名字任何人都能轻松发音。但后来 MySQL 被 Sun Microsystems(2008 年)收购,后者又被 Oracle(2009 年)收购。软件开发人员将 MySQL 视为摆脱昂贵的 Oracle 独裁统治的免费救星,他们开始重新考虑使用什么。
与此同时,由少数几家小型独立公司赞助的分布式开发者社区正在慢慢地让 PostgreSQL 变得越来越好。他们悄悄地添加了强大的功能,如全文搜索(2008 年)、窗口函数(2009 年)和 JSON 支持(2012 年)。他们还通过流复制、热备用、就地升级(2010 年)、逻辑复制(2017 年)等功能,以及通过勤奋地修复错误和打磨粗糙的边缘,使数据库更加坚如磐石。
在此期间,PostgreSQL 中添加的最具影响力的功能之一是支持扩展的能力:为 PostgreSQL 添加功能的软件模块(2011)。
借助扩展,PostgreSQL 开始变得不仅仅是一个出色的关系数据库。借助 PostGIS,它成为了一个出色的地理空间数据库;借助 TimescaleDB,它成为了一个出色的时间序列数据库;借助 hstore,它成为了一个键值存储;借助 AGE,它成为了一个图形数据库;借助 pgvector,它成为了一个矢量数据库。PostgreSQL 成为了一个平台。
现在,开发人员可以使用 PostgreSQL 的可靠性、可扩展性(取代非关系数据库)、数据分析(取代数据仓库)等。
此时,聪明的读者应该会问:“大数据呢?”这个问题问得好。从历史上看,“大数据”(例如数百 TB 甚至 PB)以及相关的分析查询一直不适合 PostgreSQL 这样的数据库,因为它本身无法水平扩展。
这种情况也在改变。去年 11 月,我们推出了“
因此,虽然“大数据”历来是 PostgreSQL 的弱点,但很快,任何工作量都不会太大。
PostgreSQL 就是答案。PostgreSQL 是我们解放自我、构建未来的方式。
我们不用费心处理几个不同的数据库系统(每个系统都有自己的特点和查询语言),而是可以依靠世界上最通用、可能也是最可靠的数据库:PostgreSQL。我们可以花更少的时间在管道上,而花更多的时间在构建未来上。
PostgreSQL 一直在不断改进。PostgreSQL 社区不断完善核心。如今,有更多公司为 PostgreSQL 做出贡献,包括超大规模企业。
当今的 PostgreSQL 生态系统(
还有更多创新的独立公司围绕核心进行构建,以使 PostgreSQL 体验更好:
当然还有我们,
Timescale 的故事可能听起来有点耳熟:我们正在为物联网客户解决一些棘手的传感器数据问题,但我们被数据淹没了。为了跟上步伐,我们构建了一个复杂的堆栈,其中包括至少两个不同的数据库系统(其中一个是时间序列数据库)。
有一天,我们到达了极限。在我们的 UI 中,我们想要同时按 device_type 和 uptime 过滤设备。这本应该是一个简单的 SQL 连接。但由于我们使用了两个不同的数据库,因此需要在应用程序中在两个数据库之间编写粘合代码。我们需要数周时间和整个工程冲刺才能完成这一改变。
然后,我们的一位工程师有了一个疯狂的想法:我们为什么不直接在 PostgreSQL 中构建一个时间序列数据库呢?这样,我们只需要一个数据库来存储所有数据,就可以更快地免费发布软件。然后我们构建了它,它让我们的生活变得轻松多了。然后我们告诉了我们的朋友,他们也想尝试一下。我们意识到这是我们需要与世界分享的东西。
因此,我们开源了时间序列扩展 TimescaleDB,并且
在此后的七年里,我们在扩展和 PostgreSQL 云服务方面投入了大量资金,为 PostgreSQL 开发人员提供了越来越好的时序和分析体验:查询速度提高 350 倍,通过超表(自动分区表)插入量提高 44%;通过连续聚合(实时物化视图)对常见查询的响应时间缩短至毫秒级;通过本机列压缩节省 90% 以上的存储成本;通过分层存储实现无限的低成本对象存储等等。
这就是我们的起点,即时间序列数据,也是我们最出名的领域。
但去年我们开始扩张。
我们推出了
最近,
PopSQL 是用于团队协作的 SQL 编辑器
我们还推出了“
如今,Timescale 是 PostgreSQL 的强大版本——适用于任何规模。我们现在解决了其他人无法解决的硬数据问题——不仅在时间序列中,而且在 AI、能源、游戏、机器数据、电动汽车、空间、金融、视频、音频、Web3 等领域。
我们相信开发人员应该将 PostgreSQL 用于一切工作,并且我们正在改进 PostgreSQL 以便他们能够做到这一点。
客户不仅将 Timescale 用于时间序列数据,还将 Timescale 用于矢量数据和一般关系数据。他们使用 Timescale 是为了能够将 PostgreSQL 用于一切。您也可以:
我们人类的现实,无论是物理还是虚拟,无论是线下还是线上,都充满了数据。正如尤达大师所说,数据围绕着我们,束缚着我们。这一现实越来越多地由软件、软件开发人员编写的软件和我们自己所主宰。
值得赞赏的是,这是多么了不起。不久前,2002 年,当我还是麻省理工学院的研究生时,世界对软件失去了信心。我们正从互联网泡沫破灭中恢复过来。领先的商业出版物宣称“
但今天,尤其是在这个生成式人工智能的世界里,我们才是塑造未来的人。我们是未来的建设者。我们应该掐一下自己。
一切都在变成计算机。这在很大程度上是一件好事:我们的汽车更安全,我们的家更舒适,我们的工厂和农场更高效。我们可以即时获取比以往更多的信息。我们彼此联系更紧密。有时,这让我们更健康、更快乐。
但情况并非总是如此。就像力量一样,计算既有光明的一面,也有黑暗的一面。越来越多的证据表明,手机和社交媒体直接导致了
我们已经成为影响未来建设的两种宝贵资源的管理者:我们的时间和我们的精力。
我们可以选择将这些资源花在管理管道上,或者采用 PostgreSQL for Everything 并构建正确的未来。
我想你知道我们的立场。
感谢阅读。#Postgres4Life
(
这篇文章由Ajay Kulkarni撰写。