导读:如今,市场上大多数大公司都在使用 PostgreSQL。但是这是为什么呢?在本文中找到答案。
如今,市场上很多大公司都在使用 PostgreSQL。无论是初创公司还是大型企业,Postgres 都是当今最好、最受欢迎的解决方案之一。
但这是为什么呢?是什么让 PostgreSQL 如此出色?为什么公司放弃了 Oracle、MS SQL 或 DB2 等企业级数据库?请各位继续阅读以便找到答案。
过去几年,世界发生了巨大变化。我们常常使用云原生应用程序和微服务,很少部署单体生态系统。因此,许多公司(包括初创公司和财富 500 强企业)从其典型的企业级数据库(如 Oracle、MS SQL 或 IBM DB2)转向 PostgreSQL。这种趋势在全球范围内都很明显,这可能会让一些人感到惊讶。
在这篇文章中,我们将讨论几个问题。首先,我们将分析 PostgreSQL 是否确实是公司和开发者眼中最受欢迎的数据库。接下来,我们将探讨为什么大公司会使用它。最后,我们将检查它是否适合企业使用,并解释它比其他 SQL 数据库更好的地方。
谁在使用 Postgres?
在解释为什么 PostgreSQL 无处不在之前,让我们先检查一下是否如此。
我们知道许多公司都在宣传他们使用的产品,并且往往只关注好的方面,但现实(特别是在企业级)很快验证了这些产品。企业可能很容易超越它们,并表明它们在苛刻的环境中是不可信的。
使用 Postgres 的公司
让我们来了解一些在日常运营中使用 PostgreSQL 的大公司。这是不深入介绍他们如何使用它,只会链接到他们的资料。
Instagram每天处理数百万张照片。根据Statista 的数据,截至 2024 年初,Instagram 每月拥有 20 亿活跃用户。他们将用户数据、好友关系、媒体和其他数据保存在 PostgreSQL 中。
截至 2024 年, Reddit拥有超过5 亿个账户。为了支持这一点,他们使用 PostgreSQL 作为 ThingDB(一种键值存储)和常规 SQL 数据库。
Skype每月有超过 3 亿活跃用户,它使用 PostgreSQL 进行批处理或队列处理等工作。
Spotify每月拥有超过6 亿用户,使用PostgreSQL 满足各种存储需求。
Robinhood拥有超过1000 万用户,在其数据湖中使用PostgreSQL 。
Twitch的125 个 OLTP 数据库中大多数都运行 PostgreSQL 。
美国宇航局及其国际空间站使用 PostgreSQL。
我们可以看到许多大公司在其生产系统中使用 PostgreSQL。说 PostgreSQL 无处不在并不为过。它确实为 OLTP 和 OLAP 工作负载提供支持,每天有数百万用户和交易。
开发人员及其偏好
同样,开发人员的热情使 PostgreSQL 成为世界上最受欢迎的数据库。根据2023 年 Stack Overflow 开发人员调查,PostgreSQL 在专业开发人员和总体人群中处于领先地位:
由于开发人员喜欢 Postgres,他们会鼓励他们的团队和管理层更多地使用它。因此,我们可以预期 PostgreSQL 在未来几年会变得更加流行。
Postgres 贡献者
公司之间既有使用 PostgreSQL 的,也有开发 PostgreSQL 的。根据 EDB 之图示,AWS、Microsoft 和 VMware 大力支持 PostgreSQL 的发展。
这表明PostgreSQL并不是一个玩具,而是得到了市场和整个行业的大力支持。
我喜欢 Oracle 和 DB2:为什么要切换?
现在让我们考虑一下,为什么我们要从其他企业级数据库(如 Oracle、DB2 或 Microsoft SQL Server)切换到 PostgreSQL。这是一个合理的问题,因为 PostgreSQL 不像其他数据库那样拥有庞大的所有者,我们可能怀疑它落后于其他产品。让我们看看是否如此。
PostgreSQL 具有坚实的基础
PostgreSQL 实际上是世界上第一个关系数据库管理系统之一。1973 年,加州大学伯克利分校的 Michael Stonebraker 决定开发 Edgar F. Codd 提出的关系模型的实现。它最初被命名为 Ingres,实现它只是为了证明关系模型是可行的,并且可以与当时的其他数据库模型(主要是 CODASYL 和层次结构)竞争。
此后,该项目并未停止。1980 年,Stonebraker 与他人共同创立了 Relational Technology, Inc.,以生产 Ingres 的商业版本。这就是 Postgres 的诞生。该数据库主要用于研究和实验,直到 1992 年 Stonebraker 与他人共同创立了 Illustra Information Technologies,为全球所有公司创建了一个数据库。
最终,Postgres于1994年放弃了QUEL语言并改用SQL,并最终改名为Postgres95以及PostgreSQL。
PostgreSQL 可以替换我现在的数据库吗?
Postgres 支持企业界所需的基本功能。让我们看看其中的一些。
索引:Postgres 支持多种类型的索引,包括 B-Tree、GIN、GiST、BRIN、向量等。Postgres可以在线重建索引。
安全性:Postgres 同时支持权限系统和行级安全策略。
复制和高可用性:Postgres 支持主服务器和备用副本。它既支持流复制,也支持逻辑复制。它支持日志传送、流式传输和其他用于连续存档的解决方案。
列式存储:PostgreSQL 通过许多扩展(例如Hydra或ParadeDB)支持列式存储。
隔离级别:PostgreSQL 支持真正的可序列化隔离级别和快照。
故障转移和负载平衡:Postgres 支持故障转移和负载平衡。
分区:PostgreSQL 支持具有各种策略的表分区。
加密:Postgres 支持多种级别的加密,包括列加密、数据分区加密或客户端加密。
OLAP:Postgres 可以处理 OLTP 和OLAP 工作负载。
云部署:可以使用AWS RDS、Amazon Aurora、Azure Database for PostgreSQL或Cloud SQL for PostgreSQL在云中部署 PostgreSQL 。
供应商锁定:Postgres 可以在本地部署,也可以与其他基础设施提供商(如Tembo)一起部署。
我们可以看到,PostgreSQL 支持企业级数据库系统所需的一切。然而,它还不止于此。Postgres 支持许多独特的功能,与竞争对手相比,它甚至更胜一筹。让我们继续阅读,看看到底有哪些功能。
使 PostgreSQL 变得更好的事情
PostgreSQL 是一个开源数据库。因此,任何人都可以扩展它以提供更多功能。这使得它具有高度可配置性。例如,AWS 使用postgresql-logfdw扩展了 PostgreSQL ,让用户可以轻松读取存储在 CloudWatch 中的数据库日志。
https://github.com/aws/postgresql-logfdw
Postgres 可以轻松适应构建高度定制的解决方案。例如,Amazon Redshift可以被视为 Postgres 的一个高度可扩展的分支。它是一个专注于 OLAP 工作负载的分布式数据库,您可以在 AWS 中部署它。
Postgres 使采用新技术变得容易,并且可以毫不费力地将它们放入数据库中。例如,借助pg_analytics ,您可以直接在 Postgres 中运行DuckDB。
然而,PostgreSQL 最大的优势在于它的扩展。Postgres 有一个非常可扩展的扩展机制,人们可以用它来构建比 SQL 功能更多的东西。让我们看看 Postgres 还能做什么。
Postgres 不仅仅是 SQL
PostgreSQL 不再仅仅是一个 SQL 数据库。得益于其强大的扩展功能,它支持许多其他工作负载和场景。让我们看看其中的一些。我们在另一篇关于PostgreSQL Everywhere 的文章中详细介绍了它们。
PostgreSQL 能够存储不同类型的数据。除了标准数字和文本之外,您可能还需要存储更复杂的数据,例如嵌套结构、空间信息或数学公式。如果不使用专门优化以理解列内容的数据结构,查询此类数据可能会慢得多。值得庆幸的是,PostgreSQL 提供了各种扩展和技术,旨在有效处理非关系数据。它可以处理 XML、JSON、空间数据、间隔、向量等等。
全文搜索(FTS) 是一种分析文档中每个单词以查找与查询匹配项的技术。它不仅可以找到包含精确短语的文档,还可以识别相似的短语、拼写错误、模式、通配符、同义词等。这个过程更具挑战性,因为每个查询都更复杂,增加了误报的可能性。此外,不是直接扫描每个文档,而是需要将数据集转换为预先计算的聚合,然后在搜索过程中使用这些聚合。PostgreSQL 支持具有各种扩展的 FTS,并且在许多生产场景中可以轻松超越 Elasticsearch。
为了进行分析,数据通常从各种来源收集,例如 SQL 和 NoSQL 数据库、电子商务平台、数据仓库、Blob 存储、日志文件和点击流等。这些数据通常在 ETL 过程中收集,该过程涉及从不同位置加载信息。PostgreSQL 通过外部数据包装器原生支持此功能。PostgreSQL 可以从 S3、Azure、AWS、数据湖和其他数据库读取数据。我们可以轻松地使用 Postgres 构建数据湖。
Postgres 支持多种数据存储格式。它可以处理常规表、列式存储、拼花文件、时间序列等等。这样,我们可以改进分析查询并将Postgres 转变为 OLAP 甚至 HTAP 解决方案。
Postgres 提供了增量更新的物化视图,非常适合时间序列数据。我们可以定义聚合,即使我们修改数据,这些聚合也会不断重新计算并保持最新。
Postgres 可以作为基于 AI 的解决方案的向量数据库。随着 ChatGPT 和其他大型语言模型的兴起,我们希望通过检索增强生成来增强我们的解决方案。这可以通过 PostgreSQL 对向量操作的支持轻松实现。
长话短说,Postgres 可以处理任何事情。它不仅仅是一个用于 OLTP 工作负载的 SQL 数据库。它可以支持云原生分布式计算所需的任何现代工作负载。
未来就在眼前,Postgres 已做好准备
凭借其扩展机制,Postgres 可以支持任何类型的工作负载。这使得它成为一个非常有趣的平台,可用于为新领域构建解决方案。我们无需从头开始构建新数据库,只需使用新功能扩展 PostgreSQL,让它处理优化、安全、用户管理等每个生产级系统都必须具备的元素的困难部分。
无论我们谈论的是自定义数据类型、另一个内存进程还是AI 用例,Postgres 都可以进行调整以支持新场景。当出现一些新需求时,我们不需要从头开始,而只需使用扩展来扩展 PostgreSQL。Postgres 已为未来的一切做好准备。
企业不会忽视 Postgres,你也不应该
PostgreSQL 被公认为最流行的 SQL 数据库之一,但它提供的功能远不止 SQL 引擎。借助各种扩展,PostgreSQL 现在可以管理非关系数据、全文搜索、分析过程、时间序列等。OLAP 和 OLTP 之间的区别不再必要,因为 PostgreSQL 支持在单个数据库中执行 HTAP 工作流。
PostgreSQL 支持企业级 HA、可扩展性、权限或安全性要求。这种多功能性使 PostgreSQL 成为一种适应性极强的数据库,能够满足各种要求,这也解释了为什么它现在是世界上最受欢迎的数据库。