2018,为何你应该使用PostgreSQL,这几个也许就是理由了

五年以前,我写了一个《为何你应使用 PostgreSQL》的岾子,引起了广泛的关注。一年以后,我增加了一些我漏写的内容,这些内容我会在这篇文章的后半部分重述一下要点。但是在最近的 4-5 年,PostgreSQL 有了很多的改进和提高,也就有了更多的理由我们为何要使用它。现在这里是一个新的总结,为何你应使用 PostgreSQL 这一特别棒的数据库。

[[216147]]

数据类型,包括 JSONB 和范围(Range)类型

Postgres 一直以来对新增数据类型都是开放和友好的系统。 它有数组、空间地理以及很多时间相关的数据类型。几年前它又增加了两种值得我们关注和使用的新类型:

  • JSONB 类型 

JSONB 是一个二进制的 JSON 数据类型。它可以使用 GIN 和 GIST 格式进行索引。你也可以快速查询完整的 JSON 文档。

  • Range 范围类型 

这个数据类型现在还没有 JSONB 有名,范围类型当它是你需要的类型时,它才会特别地有用。 对时间范围来说,使用一列字段来表达从一个值到另一个值的范围特别方便。如果你创建一个日历应用,或者总是有一个从哪个时间到另一个时间的参数,那范围类型可以让你只需使用一个字段值即可。更大的好处还有你可以指定一定的时间范围不能相互覆盖、交叉,或是其他对你的应用有用的约束。

[[216148]]

Extensions 扩展功能

谈到 Postgres 就很难不提到围绕它存在的生态系统。扩展模块的使用对社区来说很关键,同时也促使 Postgres 快速发展。扩展使用户可以让用户使用原生的系统连接 Postgres 核心,而不必是将需求提交给 Postgres 的核心开发。这也意谓着用户可以增加丰富的功能而不必与 Postgres 内核的发布和审核循环连在一起。一些特别有名的重磅扩展有:

  • Citus 扩展 

Citus (这也是我工作的内容) 扩展让 Postgres 成为了一个分布式数据库,它允许用户很容易地将数据库进行跨节点的分发。 而对你的应用来说,它仍然像是一个单节点的数据库,而在后台,Citus 会将数据传给多个不同的物理设备和多个 Postgres 的实例。

  • HyperLogLog 扩展 

这是一个我个人最为喜欢的扩展,它允许用户对大量数据的聚集的唯一计数有一个很容易获得且非常接接近理论值的结果,当然也可以对跨时间联合、相交等各种操作进行 处理。HyperLogLog 和其他的概要逻辑对处理大数据集和分布式数据库很常用,并且是可以很方便地嵌入 Postgres 内部使用。

  • PostGIS 扩展 

PostGIS 不是一个新的扩展,但它是一个值得重提亮点。它通常都是被认为是***进的地理数据库。PostGIS 增加了新的高级的地理空间数据类型、操作符,使得很多与位置有关的地图类或是路由类的操作变得很容易。

逻辑复制

多年以来,大家要求最多的就是解决 Postgres 中设置数据复制的易用性。最早时我们也有基本的复制方案,然后我们有了流复制技术(即二进制的 WAL 或称之为预写日志)。 对类似 wal-e 这样的工具,帮助提升了 Postgres 在灾难恢复方面的能力。

现在最近的版本里,我们有了逻辑复制,虽然现在还是需要一个扩展,不是 100% 内核功能,但最终我们还是有了一个完整的逻辑复制方案。逻辑复制允许用户发送不同数量的指令,这也意谓着我们可以复制指定的内容或表。

系统扩展性

除了我们见到的 Postgres 在持续对功能和性能的改进,最近也是特别地增加了并行查询功能以获取更好的性能。如果用户需要超出单个 Postgres 节点的扩展,我们可以使用前面提到的 Citus 进行横向扩展。

丰富的索引

Postgres 现在有很多种强大的索引,像 GIN 和 GiST 索引,它们对 JSONB 数据特别有用。我们现在也有了 KNN 和 Sp-GiST 索引格式,并且还在增加中。

Upsert 功能

Upsert 在 Progress 已开发和演变有好几年了。当然,一些用户可以通过变通使用 CTE 功能来实现类似功能,但可能会产生一些条件冲突。这个特性曾是 MySQL 有但 Postgres 没有的功能,现在 1 年多前,Postgres 也有了正式的支持。

外部数据源封装

当然,还有几年前就有的外部数据源封装功能。它允许你映射外部数据系统至 Postgres 中的表。这就意谓着,比如,我们可以在 Postgres 中查询 Redis 的数据库。这项功能 5 年前就一直在不断地改进和提高,尤其是现在我们已支持可写的外部数据源处理,即我们在 Postgres 直接写入数据至外部数据库。现在官方的 Postgres 发布版本中至少带有 Postgres 的 FDW,它对跨 Postgres 实例读写数据尤其有用。

更多其他的功能 

如果你对以前的 PG 版本不是太熟,在以前的版本中一些应了解的功能还包括:

  • 窗口函数
  • 一般函数
  • 可定制的语言
  • NoSQL 数据类型
  • 定制函数
  • CTE 表达式
  • 并行索引创建
  • 事务 DDL
  • 外部数据封装
  • 条件或函数式索引
  • 事件侦听 / 提醒
  • 表继承
  • 事务级的同步复制 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/288841.html<

(0)
运维的头像运维
上一篇2025-05-16 12:35
下一篇 2025-05-16 12:36

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注