暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[译文] 创建一个像 PostgreSQL 这样的数据库软件有多难?

原创 Avinash Vallarapu 2021-08-06
1043

针对标题的问题,毫不奇怪,人们大多将其评为“非常难”。然而,这个问题中的“喜欢”这个词非常含糊,无论如何,这种歧义导致了通过将其分解为两个问题并进一步讨论来写一篇关于这个主题的文章的想法。

  • 安装和创建 PostgreSQL 数据库有多难。
  • 创建像 PostgreSQL 这样的开源数据库软件有多难?

安装和创建 PostgreSQL 数据库

可能很容易倾向于DBaaS 平台,只需单击几下即可创建数据库。DBaaS 也可以作为数据库(作为服务提供)进行销售,因为它是自动管理的,因此不需要维护和管理或调整。这是真的吗?DBaaS 上提供的 Postgres 真的是 PostgreSQL 吗?用户支付的费用是否超出了他们的估计并陷入了深度的供应商锁定?用户是否失去了对其数据库的完整可见性并缺乏 DBaaS 的许多功能?为了实现类似于 DBaaS 作为托管服务承诺的备份和高可用性的自动管理,考虑使用pgBackRest 进行备份和Patroni 进行高可用性这样的项目是否明智?? 无论如何,我很乐意在单独的文章中回答这些问题。同时,我鼓励您观看Percona 首席执行官 Peter Zaitsev关于 -为什么公共数据库即服务是开源分发的主要内容的演讲。

通过这篇文章,我会鼓励用户尝试安装 PostgreSQL 并了解整体架构,以免陷入导致供应商锁定的营销陷阱。

PostgreSQL 的软件包或安装程序可用于 Linux、macOS、Windows、Solaris 和 BSD 操作系统,如本PostgreSQL 文档中所示。我想举一个例子来说明如何在 CentOS 上安装 PostgreSQL。

步骤 1:在PostgreSQL 下载页面上,单击操作系统系列。然后,您应该会看到可用软件包的发行版列表(操作系统系列)。

image.png

第 2 步:然后您可以继续选择适当的 PostgreSQL 版本,然后查看您可以复制和粘贴以完成安装和设置的确切命令。

image.png

这些是我在 CentOS 7.8 机器上执行的步骤。正如您在以下日志中看到的,我可以通过 3 个简单的步骤安装和启动 PostgreSQL。

# Install the repository RPM: $ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm # Install PostgreSQL: $ sudo yum install -y postgresql13-server # Optionally initialize the database and enable automatic start: $ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb $ sudo systemctl enable postgresql-13 $ sudo systemctl start postgresql-13

要创建数据库,我可以使用 create database 命令,如以下日志中所示。有关创建数据库时可用配置的更多详细信息,请参阅此PostgreSQL 文档。

$ psql -c "CREATE DATABASE opensource"

现在,让我们讨论第二个问题。

创建像 PostgreSQL 这样的开源数据库软件有多难?

为了让您自己找出答案,让我们讨论一些有关 PostgreSQL 的有趣事实。

PostgreSQL 社区

PostgreSQL 社区是世界上最先进的开源社区之一。没有人拥有该软件(请参阅PostgreSQL 许可证)并且任何收购都无法阻止社区贡献。存在一条规则,即来自同一家公司的成员不得超过 3 名,成为 7 名核心团队的成员。所有关于功能、错误修复和设计更改的交流都通过电子邮件公开讨论。通过订阅邮件列表,您可以参与与开发人员关于他们的想法、代码贡献、功能请求或错误的讨论。

Postgres 不是来自单个公司的开源产品。它是一个全球社区的开源项目,遍布全球。来自 NTT Data、富士通、微软、VMware、Red Hat 等多家公司的开发人员也做出了贡献,这些公司正在解决其特定领域的挑战。它不仅是一个可用的源软件,而且是一个对批评开放、对修改开放、对重新分发开放、对派生软件开放(参见postgres 派生数据库)的软件,为用户提供了足够的自由。

SQL 合规性

在 Oracle、DB2、SQL Server 和 MySQL 等最流行的数据库中,PostgreSQL 是唯一一个符合177 个 SQL 标准中的 170 个标准(ISO/IEC 9075:2016 aka SQL:2016 ) 的数据库。如果你喜欢坚持标准,PostgreSQL 是最好的选择。

PostgreSQL 的一些特性及其开源生态系统。

以下是与其他几个数据库相比,Postgres 中最先进的功能列表。顺便说一下,这些都是开源社区 PostgreSQL 的一部分,不需要许可。另一个要记住的事实是,没有由社区维护的 PostgreSQL 企业版。

  1. 用于高可用性和只读备用服务器的流式复制(类似于 Oracle 的逐字节复制)。有关更多详细信息,请参阅PostgreSQL 中的流式复制。
  2. 内置逻辑备份和物理备份。
  3. 企业级开源备份工具 - pgBackRest用于处理 TB 级的数据库。
  4. 逻辑复制和逻辑解码。在本文档中查看有关逻辑复制的更多详细信息。
  5. 分区和子分区。支持列表、哈希和范围分区。
  6. 外部数据包装器。使用分区和外部数据包装器可以实现本机分片。
  7. 并行查询。请参阅这篇关于postgres 并行性的文章。
  8. 在线表和索引维护,包括在线表移动。有关更多详细信息,请参阅pg_repack。
  9. 使用pg_upgrade更快地升级主要版本。
  10. 用于企业级 PostgreSQL 设置的数百个扩展和众多开源工具。

PostgreSQL 发布周期

通常在每年的 9 月或 10 月左右会有一个主要版本。每个季度都会发布一个次要版本。通常,在每个季度第二个月的第二个星期二,您会看到当前支持的主要版本的次要版本。根据错误的影响,我们可能会看到比预期更早发布的次要版本。

一个人有幸观看CommitFest,在那里可以看到正在审查和提交的补丁以及讨论。

迁移到 PostgreSQL

为了帮助迁移到 PostgreSQL,Gilles Darold(Ora2PG、pgtt和orafce)、Peter Eisentraut、Laurenz Albe(Oracle_FDW)、Pavel Stehule(plpgsql_check和orafce)等贡献者以及更多开发人员通过开源扩展和工具做出了巨大贡献。人们只需要知道围绕 PostgreSQL 存在一个庞大的开源生态系统,以帮助将数据库迁移到 PostgreSQL,而无需任何企业许可。

PostgreSQL 文档

作为多本 PostgreSQL 书籍的作者,我很高兴地与大家分享,没有比我们在美丽的PostgreSQL 文档中看到的更多信息的书。PostgreSQL 文档可以是 PostgreSQL 中任何主题的所有内部结构的主要来源。人们可以简单地依靠 Postgres 文档来安装、配置、调整、执行复制和备份。感谢 Jonathan Katz、Peter Eisentraut、Josh Berkus、Thomas G Lockhart 和整个社区,他们一直在为 PostgreSQL 文档和网站做出贡献。如果您有兴趣,另请参阅Robert Haas 的这篇文章,非常活跃的 PostgreSQL 贡献者之一和核心团队成员,了解 2019 年每个开发人员的提交数量或贡献。

结论

好吧,看完这篇文章,你可能已经明白,再构建一个像PostgreSQL这样的数据库软件是非常困难的,可能需要几十年的时间。在社区得到在制作PostgreSQL的世界最喜爱数据库中的所有学分。建立一个与 PostgreSQL 全球社区类似的团队几乎是一项不可能完成的任务。由于这是不可能的,因此享受使用 PostgreSQL 的自由并为 PostgreSQL 做出贡献是明智的。

原文链接:https://www.migops.com/blog/2021/04/17/how-difficult-is-to-create-a-database-software-like-postgresql/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论