当今 的最大趋势之一是 成为事实上的数据库标准。关于如何使用 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。” ( 来源 ) ( 来源 ) https://youtu.be/VEWXmdjzIpQ?si=auYo1stUWmC7PK8Y&embedable=true “当我第一次听说 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 超过 13 年了(当我从 MySQL 切换过来时)。 PostgreSQL 的主要贡献者 PostgreSQL 现状调查 已经有一些博客文章介绍了如何使用 PostgreSQL 做所有事情,但是却没有一篇解释为什么会发生这种情况(以及更重要的是,为什么这很重要)。 到目前为止。 但要了解为什么会发生这种情况,我们必须了解更基础的趋势,以及这种趋势如何改变人类现实的根本性质。 一切都在变成计算机 我们的汽车、房屋、城市、农场、工厂、货币、物品等所有东西都正在变成计算机。我们也正在数字化。每年,我们都会将自己的身份和行为数字化:我们如何购物、如何娱乐、如何收藏艺术品、如何寻找问题的答案、如何交流和联系、如何表达自我。 22 年前,“普适计算”这个概念似乎很大胆。当时,我还是麻省理工学院人工智能实验室的研究生,正在研究我的 智能环境。我的研究得到了 ,它有一个崇高而大胆的目标:让计算像我们呼吸的空气一样无处不在。从当时的角度来看:我们的服务器机架就放在壁橱里。 论文 麻省理工学院氧气项目 从那时起,很多事情都发生了变化。计算如今无处不在:在我们的办公桌上、在我们的口袋里、在我们的物品中,以及在我们的“云”中。这正是我们预测的。 但这些变化的二阶效应并非我们大多数人所预期的: 。随着每台新计算设备的出现,我们收集了更多关于现实的信息:人类数据、机器数据、业务数据、环境数据和合成数据。这些数据充斥着我们的世界。 无处不在的计算带来了无处不在的数据 。所有这些新数据源都需要新的地方来存储它们。二十年前,可能只有五个可行的数据库选项。如今有几百个,其中大多数专门用于特定用例或数据,而且每个月都会出现新的数据库。 数据洪流导致数据库出现“寒武纪大爆发” 。为软件工作负载选择合适的数据库已不再是件容易的事。相反,开发人员不得不拼凑复杂的架构,这些架构可能包括:关系数据库(因为其可靠性)、非关系数据库(因为其可扩展性)、数据仓库(因为其能够提供分析服务)、对象存储(因为其能够廉价地归档旧数据)。这种架构甚至可能具有更专业的组件,例如时间序列或矢量数据库。 数据和数据库数量越多,软件就越复杂 复杂的架构越脆弱,需要更复杂的应用程序逻辑,开发时间越少,开发速度越慢。复杂性不是好处,而是真正的成本。 复杂性越高,构建时间越短。 随着计算变得越来越普遍,我们的现实也与计算更加紧密地交织在一起。我们把计算带入了我们的世界,也把自己带入了计算的世界。我们不再只是线下的身份,而是线上线下行为的混合体。 软件开发人员是人类在这个新现实中的先锋。我们正是构建塑造这个新现实的软件的人。 但现在开发人员面临着数据泛滥和数据库复杂性的困扰。 这意味着开发商不是在塑造未来,而是花费越来越多的时间来管理管道。 我们是怎么来到这里的? 第一部分:层层递进的计算浪潮 计算无处不在,数据也无处不在。这并非一朝一夕就能实现的,而是几十年来层层叠加的结果: 大型机(1950 年代以后) 个人电脑(20 世纪 70 年代以后) 互联网(1990 年代及以后) 移动端(2000 年代以后) 云计算(2000 年代以后) 物联网(2010 年代及以后) 每次浪潮都让计算机变得更小、更强大、更普及。每次浪潮都建立在前一次浪潮的基础之上:个人计算机是小型主机;互联网是联网计算机的网络;智能手机是连接到互联网的更小的计算机;云计算使计算资源的访问变得民主化;物联网是智能手机组件被重构为连接到云的其他物理事物的一部分。 但在过去二十年里,计算技术的进步不仅发生在物理世界,也发生在数字世界,反映了我们的混合现实: 社交网络(2000+) 区块链(2010 年代以后) 生成式人工智能(2020 年代及以后) 随着每一波新的计算浪潮,我们都会获得有关混合现实的新信息来源:人类数字排放、机器数据、业务数据和合成数据。未来的浪潮将创造更多的数据。所有这些数据都推动了新浪潮,其中最新的浪潮是生成式人工智能,而生成式人工智能又进一步塑造了我们的现实。 计算浪潮并非孤立存在,而是像多米诺骨牌一样层层叠加。起初只是涓涓细流,很快就变成了数据洪流。然后,数据洪流又导致越来越多的数据库的创建。 第 2 部分:增量数据库增长 所有这些新的数据源都需要新的地方来存储它们——或者数据库。 大型机始于 (1964年)及以后 (1974 年),第一个 SQL 数据库。个人电脑促进了第一个商业数据库的兴起: (1977),受到 System R 的启发; (1983年);和 (1989 年),微软对 Oracle 的回应。 集成数据存储 系统 R 甲骨文 DB2 SQL 服务器 互联网的协作力量推动了开源软件的兴起,包括第一个开源数据库: (1995 年), (1996 年)。智能手机导致了 (最初创建于 2000 年)。 MySQL PostgreSQL SQLite 互联网还产生了大量数据,从而导致了第一个非关系型数据库(NoSQL)的出现: (2006); (2008); (2009)。有人将此称为“大数据”时代。 Hadoop 卡桑德拉 MongoDB 第 3 部分:数据库的爆炸式增长 2010 年左右,我们开始遇到一个临界点。在此之前,软件应用程序主要依赖于单一数据库(例如 Oracle、MySQL、PostgreSQL),选择相对容易。 但“大数据”规模越来越大:物联网推动了机器数据的兴起;由于 iPhone 和 Android 的出现,智能手机的使用量开始呈指数级增长,导致人类的数字垃圾量进一步增加;云计算使计算和存储的访问变得民主化,进一步加剧了这些趋势。最近,生成式人工智能通过创建矢量数据使这个问题变得更加严重。 随着收集的数据量不断增长,我们看到了专门数据库的兴起: 对于图形数据(2007), 对于基本的键值存储(2009), 对于时间序列数据(2013), 用于高规模分析(2016 年)、用于矢量数据的 Pinecone(2019 年)等等。 Neo4j Redis 流入数据库 ClickHouse 二十年前,可能有五种可行的数据库选项。如今,有 ,其中大多数专门用于特定用例,每个月都会出现新的数据库。虽然早期的数据库承诺具有通用性,但这些专用数据库提供了特定的权衡,这可能有意义,也可能没有意义,具体取决于您的用例。 几百 第 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,包括 ,一个 GitHub 事件洞察平台,拥有超过 1 亿个向量; ,一个社交病毒式传播预测平台,拥有超过 1 亿个向量; ,一个金融洞察平台,拥有 3000 多万条向量。 时间刻度向量 开放的Sauced 维拉力赛 市场阅读器 流行SQL 最近, 构建并提供最佳的 PostgreSQL UI。PopSQL 是用于团队协作的 SQL 编辑器,具有自动完成、模式探索、版本控制和可视化功能。数十万开发人员和数据分析师使用 PopSQL 处理他们的数据,无论是在 PostgreSQL、Timescale 还是其他数据源(如 Redshift、Snowflake、BigQuery、MySQL、SQL Server 等)上。 我们还收购了PopSQL PopSQL 是用于团队协作的 SQL 编辑器 洞察 我们还推出了“ ,它跟踪每个数据库查询,以帮助开发人员监控和优化数据库性能。 Insights 克服了 pg_stat_statements(用于查看数据库统计信息的官方扩展)的几个限制。 规模非常庞大,证明了我们产品(和团队)的能力:已经收集、存储和分析了超过一万亿个规范化查询(即,其参数值已被占位符替换的查询),每天有超过 100 亿个新查询被提取。 Insights”,这是我们开展过的最大规模的测试 Timescale 现已成为“功能更强大的 PostgreSQL” 如今,Timescale 是 PostgreSQL 的强大版本——适用于任何规模。我们现在解决了其他人无法解决的硬数据问题——不仅在时间序列中,而且在 AI、能源、游戏、机器数据、电动汽车、空间、金融、视频、音频、Web3 等领域。 我们相信开发人员应该将 PostgreSQL 用于一切工作,并且我们正在改进 PostgreSQL 以便他们能够做到这一点。 客户不仅将 Timescale 用于时间序列数据,还将 Timescale 用于矢量数据和一般关系数据。他们使用 Timescale 是为了能够将 PostgreSQL 用于一切。您也可以: 。 从这里免费开始 尾声:尤达? 我们人类的现实,无论是物理还是虚拟,无论是线下还是线上,都充满了数据。正如尤达大师所说,数据围绕着我们,束缚着我们。这一现实越来越多地由软件、软件开发人员编写的软件和我们自己所主宰。 值得赞赏的是,这是多么了不起。不久前,2002 年,当我还是麻省理工学院的研究生时,世界对软件失去了信心。我们正从互联网泡沫破灭中恢复过来。领先的商业出版物宣称“ “那时候,软件开发人员在金融领域比在科技领域更容易找到好工作——包括我在内,我的许多麻省理工学院的同学都是这样做的。 没关系 但今天,尤其是在这个生成式人工智能的世界里,我们才是塑造未来的人。我们是未来的建设者。我们应该掐一下自己。 一切都在变成计算机。这在很大程度上是一件好事:我们的汽车更安全,我们的家更舒适,我们的工厂和农场更高效。我们可以即时获取比以往更多的信息。我们彼此联系更紧密。有时,这让我们更健康、更快乐。 但情况并非总是如此。就像力量一样,计算既有光明的一面,也有黑暗的一面。越来越多的证据表明,手机和社交媒体直接导致了 。我们仍在努力应对 。当我们拥抱更强大的力量时,我们应该认识到它伴随着责任。 青少年精神疾病全球流行 人工智能和合成生物学 我们已经成为影响未来建设的两种宝贵资源的管理者:我们的时间和我们的精力。 我们可以选择将这些资源花在管理管道上,或者采用 PostgreSQL for Everything 并构建正确的未来。 我想你知道我们的立场。 感谢阅读。#Postgres4Life ( ) 来源 这篇文章由 撰写。 Ajay Kulkarni