paint-brush
为什么 PostgreSQL 是未来数据的基石经过@timescale
1,229 讀數
1,229 讀數

为什么 PostgreSQL 是未来数据的基石

经过 Timescale14m2024/04/26
Read on Terminal Reader

太長; 讀書

PostgreSQL 之所以能成为首选数据库标准,其根源在于其适应性、可靠性和广泛的生态系统。本文深入探讨了其占据主导地位的原因,从解决数据库复杂性到帮助开发人员满怀信心地构建未来。了解 PostgreSQL 如何彻底改变软件开发和数据管理实践。
featured image - 为什么 PostgreSQL 是未来数据的基石
Timescale HackerNoon profile picture
0-item


当今软件开发的最大趋势之一是PostgreSQL成为事实上的数据库标准。关于如何使用 PostgreSQL 做任何事情的博客文章已经有一些,但还没有一篇关于为什么会发生这种情况(更重要的是,为什么这很重要)的文章。


到目前为止!


目录

01 PostgreSQL 正在成为事实上的数据库标准

02 一切都在变成计算机

03 PostgreSQL 的回归

04 解放自己,构建未来,拥抱 PostgreSQL

05 Timescale 最初是“用于时间序列的 PostgreSQL”

06 时间尺度超越时间序列

07 Timescale 现已“强大起来的 PostgreSQL”

08 尾声:尤达?




PostgreSQL 正在成为事实上的数据库标准

在过去的几个月里,“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 开发者调查受访者第二喜欢的数据库,但它的使用率一直在稳步增长。资料来源: 2020 2021 2022


这不仅仅是小型创业公司和业余爱好者的趋势。事实上,PostgreSQL 的使用在各种规模的组织中都在增加:


按公司规模划分的 PostgreSQL 使用百分比。(来源


在 Timescale,这种趋势对我们来说并不新鲜。我们信奉 PostgreSQL 已有近十年。这就是为什么我们在 PostgreSQL 上建立业务,为什么我们是PostgreSQL 的主要贡献者,为什么我们每年都会举办PostgreSQL 现状调查(如上所述),以及我们支持 PostgreSQL 聚会和会议的原因。就我个人而言,我已经使用 PostgreSQL 超过 13 年了(当我从 MySQL 切换过来时)。


已经有一些博客文章介绍了如何使用 PostgreSQL 做所有事情,但是却没有一篇解释为什么会发生这种情况(以及更重要的是,为什么这很重要)。


到目前为止。


但要了解为什么会发生这种情况,我们必须了解更基础的趋势,以及这种趋势如何改变人类现实的根本性质。


一切都在变成计算机

我们的汽车、房屋、城市、农场、工厂、货币、物品等所有东西都正在变成计算机。我们也正在数字化。每年,我们都会将自己的身份和行为数字化:我们如何购物、如何娱乐、如何收藏艺术品、如何寻找问题的答案、如何交流和联系、如何表达自我。


22 年前,“普适计算”这个概念似乎很大胆。当时,我还是麻省理工学院人工智能实验室的研究生,正在研究我的论文智能环境。我的研究得到了麻省理工学院氧气项目,它有一个崇高而大胆的目标:让计算像我们呼吸的空气一样无处不在。从当时的角度来看:我们的服务器机架就放在壁橱里。


从那时起,很多事情都发生了变化。计算如今无处不在:在我们的办公桌上、在我们的口袋里、在我们的物品中,以及在我们的“云”中。这正是我们预测的。


但这些变化的二阶效应并非我们大多数人所预期的:


  • 无处不在的计算带来了无处不在的数据。随着每台新计算设备的出现,我们收集了更多关于现实的信息:人类数据、机器数据、业务数据、环境数据和合成数据。这些数据充斥着我们的世界。


  • 数据洪流导致数据库出现“寒武纪大爆发” 。所有这些新数据源都需要新的地方来存储它们。二十年前,可能只有五个可行的数据库选项。如今有几百个,其中大多数专门用于特定用例或数据,而且每个月都会出现新的数据库。


  • 数据和数据库数量越多,软件就越复杂。为软件工作负载选择合适的数据库已不再是件容易的事。相反,开发人员不得不拼凑复杂的架构,这些架构可能包括:关系数据库(因为其可靠性)、非关系数据库(因为其可扩展性)、数据仓库(因为其能够提供分析服务)、对象存储(因为其能够廉价地归档旧数据)。这种架构甚至可能具有更专业的组件,例如时间序列或矢量数据库。


  • 复杂性越高,构建时间越短。复杂的架构越脆弱,需要更复杂的应用程序逻辑,开发时间越少,开发速度越慢。复杂性不是好处,而是真正的成本。


随着计算变得越来越普遍,我们的现实也与计算更加紧密地交织在一起。我们把计算带入了我们的世界,也把自己带入了计算的世界。我们不再只是线下的身份,而是线上线下行为的混合体。


软件开发人员是人类在这个新现实中的先锋。我们正是构建塑造这个新现实的软件的人。


但现在开发人员面临着数据泛滥和数据库复杂性的困扰。


这意味着开发商不是在塑造未来,而是花费越来越多的时间来管理管道。


我们是怎么来到这里的?

第一部分:层层递进的计算浪潮

计算无处不在,数据也无处不在。这并非一朝一夕就能实现的,而是几十年来层层叠加的结果:


  • 大型机(1950 年代以后)
  • 个人电脑(20 世纪 70 年代以后)
  • 互联网(1990 年代及以后)
  • 移动端(2000 年代以后)
  • 云计算(2000 年代以后)
  • 物联网(2010 年代及以后)


每次浪潮都让计算机变得更小、更强大、更普及。每次浪潮都建立在前一次浪潮的基础之上:个人计算机是小型主机;互联网是联网计算机的网络;智能手机是连接到互联网的更小的计算机;云计算使计算资源的访问变得民主化;物联网是智能手机组件被重构为连接到云的其他物理事物的一部分。


但在过去二十年里,计算技术的进步不仅发生在物理世界,也发生在数字世界,反映了我们的混合现实:


  • 社交网络(2000+)
  • 区块链(2010 年代以后)
  • 生成式人工智能(2020 年代及以后)


随着每一波新的计算浪潮,我们都会获得有关混合现实的新信息来源:人类数字排放、机器数据、业务数据和合成数据。未来的浪潮将创造更多的数据。所有这些数据都推动了新浪潮,其中最新的浪潮是生成式人工智能,而生成式人工智能又进一步塑造了我们的现实。


计算浪潮并非孤立存在,而是像多米诺骨牌一样层层叠加。起初只是涓涓细流,很快就变成了数据洪流。然后,数据洪流又导致越来越多的数据库的创建。

第 2 部分:增量数据库增长

所有这些新的数据源都需要新的地方来存储它们——或者数据库。


大型机始于集成数据存储(1964年)及以后系统 R (1974 年),第一个 SQL 数据库。个人电脑促进了第一个商业数据库的兴起:甲骨文(1977),受到 System R 的启发; DB2 (1983年);和SQL 服务器(1989 年),微软对 Oracle 的回应。


互联网的协作力量推动了开源软件的兴起,包括第一个开源数据库: MySQL (1995 年), PostgreSQL (1996 年)。智能手机导致了SQLite (最初创建于 2000 年)。


互联网还产生了大量数据,从而导致了第一个非关系型数据库(NoSQL)的出现: Hadoop (2006);卡桑德拉(2008); MongoDB (2009)。有人将此称为“大数据”时代。

第 3 部分:数据库的爆炸式增长

2010 年左右,我们开始遇到一个临界点。在此之前,软件应用程序主要依赖于单一数据库(例如 Oracle、MySQL、PostgreSQL),选择相对容易。


但“大数据”规模越来越大:物联网推动了机器数据的兴起;由于 iPhone 和 Android 的出现,智能手机的使用量开始呈指数级增长,导致人类的数字垃圾量进一步增加;云计算使计算和存储的访问变得民主化,进一步加剧了这些趋势。最近,生成式人工智能通过创建矢量数据使这个问题变得更加严重。


随着收集的数据量不断增长,我们看到了专门数据库的兴起: Neo4j对于图形数据(2007), Redis对于基本的键值存储(2009),流入数据库对于时间序列数据(2013), ClickHouse用于高规模分析(2016 年)、用于矢量数据的 Pinecone(2019 年)等等。


二十年前,可能有五种可行的数据库选项。如今,有几百,其中大多数专门用于特定用例,每个月都会出现新的数据库。虽然早期的数据库承诺具有通用性,但这些专用数据库提供了特定的权衡,这可能有意义,也可能没有意义,具体取决于您的用例。

第 4 部分:数据库越多,问题越多

面对这种洪流以及存在各种权衡的专用数据库,开发人员别无选择,只能拼凑复杂的架构。


这些架构通常包括关系数据库(用于可靠性)、非关系数据库(用于可扩展性)、数据仓库(用于数据分析)、对象存储(用于廉价存档),以及用于这些用例的更专业的组件,例如时间序列或矢量数据库。



但复杂性越高,构建时间越短。复杂的架构越脆弱,需要更复杂的应用逻辑,开发时间越少,开发速度越慢。


这意味着软件开发人员没有时间构建未来,而是花费了太多时间维护管道。这就是我们今天的处境。


有一个更好的办法。


PostgreSQL 的回归

故事就在这里发生了转折。我们的主角不再是一个崭新的数据库,而是一个老牌数据库,它的名字只有核心开发人员才会喜欢:PostgreSQL。


起初,PostgreSQL 排在第二位,远远落后于 MySQL。MySQL 更易于使用,背后有一家公司支持,而且名字任何人都能轻松发音。但后来 MySQL 被 Sun Microsystems(2008 年)收购,后者又被 Oracle(2009 年)收购。软件开发人员将 MySQL 视为摆脱昂贵的 Oracle 独裁统治的免费救星,他们开始重新考虑使用什么。


与此同时,由少数几家小型独立公司赞助的分布式开发者社区正在慢慢地让 PostgreSQL 变得越来越好。他们悄悄地添加了强大的功能,如全文搜索(2008 年)、窗口函数(2009 年)和 JSON 支持(2012 年)。他们还通过流复制、热备用、就地升级(2010 年)、逻辑复制(2017 年)等功能,以及通过勤奋地修复错误和打磨粗糙的边缘,使数据库更加坚如磐石。

PostgreSQL 现在是一个平台

在此期间,PostgreSQL 中添加的最具影响力的功能之一是支持扩展的能力:为 PostgreSQL 添加功能的软件模块(2011)。 扩展使更多开发人员能够向 PostgreSQL 添加功能独立、快速、且仅需最低限度的协调。


借助扩展,PostgreSQL 开始变得不仅仅是一个出色的关系数据库。借助 PostGIS,它成为了一个出色的地理空间数据库;借助 TimescaleDB,它成为了一个出色的时间序列数据库;借助 hstore,它成为了一个键值存储;借助 AGE,它成为了一个图形数据库;借助 pgvector,它成为了一个矢量数据库。PostgreSQL 成为了一个平台。


现在,开发人员可以使用 PostgreSQL 的可靠性、可扩展性(取代非关系数据库)、数据分析(取代数据仓库)等。

那么大数据呢?

此时,聪明的读者应该会问:“大数据呢?”这个问题问得好。从历史上看,“大数据”(例如数百 TB 甚至 PB)以及相关的分析查询一直不适合 PostgreSQL 这样的数据库,因为它本身无法水平扩展。


这种情况也在改变。去年 11 月,我们推出了“ 分层存储”,它会自动将您的数据在磁盘和对象存储(S3)之间分层,从而有效地创建无限表的能力。


因此,虽然“大数据”历来是 PostgreSQL 的弱点,但很快,任何工作量都不会太大。


PostgreSQL 就是答案。PostgreSQL 是我们解放自我、构建未来的方式。


解放自己,构建未来,拥抱 PostgreSQL

我们不用费心处理几个不同的数据库系统(每个系统都有自己的特点和查询语言),而是可以依靠世界上最通用、可能也是最可靠的数据库:PostgreSQL。我们可以花更少的时间在管道上,而花更多的时间在构建未来上。


PostgreSQL 一直在不断改进。PostgreSQL 社区不断完善核心。如今,有更多公司为 PostgreSQL 做出贡献,包括超大规模企业。


当今的 PostgreSQL 生态系统( 来源


还有更多创新的独立公司围绕核心进行构建,以使 PostgreSQL 体验更好:苏帕贝斯(2020)正在将 PostgreSQL 打造为 Web 和移动开发人员的可行 Firebase 替代品;(2021年)和夏塔(2022)都使 PostgreSQL 能够针对间歇性无服务器工作负载进行零规模扩展;坦博(2022)为各种用例提供开箱即用的堆栈;尼罗河(2023)使 PostgreSQL 更易于 SaaS 应用程序;等等。


当然还有我们, 时间尺度(2017)。


Timescale 最初是“用于时间序列的 PostgreSQL”

Timescale 的故事可能听起来有点耳熟:我们正在为物联网客户解决一些棘手的传感器数据问题,但我们被数据淹没了。为了跟上步伐,我们构建了一个复杂的堆栈,其中包括至少两个不同的数据库系统(其中一个是时间序列数据库)。


有一天,我们到达了极限。在我们的 UI 中,我们想要同时按 device_type 和 uptime 过滤设备。这本应该是一个简单的 SQL 连接。但由于我们使用了两个不同的数据库,因此需要在应用程序中在两个数据库之间编写粘合代码。我们需要数周时间和整个工程冲刺才能完成这一改变。


然后,我们的一位工程师有了一个疯狂的想法:我们为什么不直接在 PostgreSQL 中构建一个时间序列数据库呢?这样,我们只需要一个数据库来存储所有数据,就可以更快地免费发布软件。然后我们构建了它,它让我们的生活变得轻松多了。然后我们告诉了我们的朋友,他们也想尝试一下。我们意识到这是我们需要与世界分享的东西。


因此,我们开源了时间序列扩展 TimescaleDB,并且向世界宣布2017 年 4 月 4 日。当时,基于 PostgreSQL 的初创公司非常少见。我们是第一批之一。


在此后的七年里,我们在扩展和 PostgreSQL 云服务方面投入了大量资金,为 PostgreSQL 开发人员提供了越来越好的时序和分析体验:查询速度提高 350 倍,通过超表(自动分区表)插入量提高 44%;通过连续聚合(实时物化视图)对常见查询的响应时间缩短至毫秒级;通过本机列压缩节省 90% 以上的存储成本;通过分层存储实现无限的低成本对象存储等等。


时间尺度超越时间序列

这就是我们的起点,即时间序列数据,也是我们最出名的领域。


但去年我们开始扩张。

时间刻度向量

我们推出了时间刻度向量(“用于 AI 应用程序的 PostgreSQL++”),这使得 PostgreSQL 成为更好的向量数据库。Timescale Vector 可扩展到超过 1 亿个向量,在 pgvector 的基础上具有更好的性能。创新公司和团队已经在大规模生产中使用 Timescale Vector,包括开放的Sauced ,一个 GitHub 事件洞察平台,拥有超过 1 亿个向量;维拉力赛,一个社交病毒式传播预测平台,拥有超过 1 亿个向量;市场阅读器,一个金融洞察平台,拥有 3000 多万条向量。


Timescale Vector 增强了 pgvector。无需学习和维护专门的矢量数据库,即可获得其性能。

流行SQL

最近, 我们还收购了PopSQL构建并提供最佳的 PostgreSQL UI。PopSQL 是用于团队协作的 SQL 编辑器,具有自动完成、模式探索、版本控制和可视化功能。数十万开发人员和数据分析师使用 PopSQL 处理他们的数据,无论是在 PostgreSQL、Timescale 还是其他数据源(如 Redshift、Snowflake、BigQuery、MySQL、SQL Server 等)上。



PopSQL 是用于团队协作的 SQL 编辑器

洞察

我们还推出了“ Insights”,这是我们开展过的最大规模的测试,它跟踪每个数据库查询,以帮助开发人员监控和优化数据库性能。 Insights 克服了 pg_stat_statements(用于查看数据库统计信息的官方扩展)的几个限制。 规模非常庞大,证明了我们产品(和团队)的能力:已经收集、存储和分析了超过一万亿个规范化查询(即,其参数值已被占位符替换的查询),每天有超过 100 亿个新查询被提取。


Timescale 现已成为“功能更强大的 PostgreSQL”

如今,Timescale 是 PostgreSQL 的强大版本——适用于任何规模。我们现在解决了其他人无法解决的硬数据问题——不仅在时间序列中,而且在 AI、能源、游戏、机器数据、电动汽车、空间、金融、视频、音频、Web3 等领域。



我们相信开发人员应该将 PostgreSQL 用于一切工作,并且我们正在改进 PostgreSQL 以便他们能够做到这一点。


客户不仅将 Timescale 用于时间序列数据,还将 Timescale 用于矢量数据和一般关系数据。他们使用 Timescale 是为了能够将 PostgreSQL 用于一切。您也可以: 从这里免费开始


尾声:尤达?

我们人类的现实,无论是物理还是虚拟,无论是线下还是线上,都充满了数据。正如尤达大师所说,数据围绕着我们,束缚着我们。这一现实越来越多地由软件、软件开发人员编写的软件和我们自己所主宰。


值得赞赏的是,这是多么了不起。不久前,2002 年,当我还是麻省理工学院的研究生时,世界对软件失去了信心。我们正从互联网泡沫破灭中恢复过来。领先的商业出版物宣称“没关系“那时候,软件开发人员在金融领域比在科技领域更容易找到好工作——包括我在内,我的许多麻省理工学院的同学都是这样做的。


但今天,尤其是在这个生成式人工智能的世界里,我们才是塑造未来的人。我们是未来的建设者。我们应该掐一下自己。


一切都在变成计算机。这在很大程度上是一件好事:我们的汽车更安全,我们的家更舒适,我们的工厂和农场更高效。我们可以即时获取比以往更多的信息。我们彼此联系更紧密。有时,这让我们更健康、更快乐。


但情况并非总是如此。就像力量一样,计算既有光明的一面,也有黑暗的一面。越来越多的证据表明,手机和社交媒体直接导致了青少年精神疾病全球流行。我们仍在努力应对人工智能和合成生物学。当我们拥抱更强大的力量时,我们应该认识到它伴随着责任。


我们已经成为影响未来建设的两种宝贵资源的管理者:我们的时间和我们的精力。


我们可以选择将这些资源花在管理管道上,或者采用 PostgreSQL for Everything 并构建正确的未来。


我想你知道我们的立场。


感谢阅读。#Postgres4Life


来源


这篇文章由Ajay Kulkarni撰写。