likes
comments
collection
share

PostgreSQL技术问答40 - Feature Matrix 功能特性矩阵本文分享了一个Postgres官方文档中

作者站长头像
站长
· 阅读数 30

本文是《PostgreSQL技术问答》系列文章中的一篇。关于这个系列的由来,可以参阅开篇文章:

文章的编号只是一个标识,在系列中没有明确的逻辑顺序和意义。读者进行阅读时,不用太关注这个方面。

本文主要讨论的内容是在Postgres的Feature Matrix 功能特性矩阵。

什么是Feature Matrix 功能特性矩阵

FM是Postgres官方技术文档中一个非常有趣的内容板块。它使用了一个文档,来描述在Postgres的各个主要大的版本中,一些比较重要和核心功能的实现,这个文档的地址如下:

www.postgresql.org/about/featu…

PostgreSQL技术问答40 - Feature Matrix 功能特性矩阵本文分享了一个Postgres官方文档中

它还使用了一种非常直观而且比较容易操作的方式,来展示各个特性项目、特性项目所属分类和版本实现之间的关系。

FM有那些主要的分类

从FM的内容上,我们可以一窥Postgres系统设计和构成的各个板块和整体框架,这对于我们理解Postgres系统,特别是其规划和设计特点,是非常有帮助的。

这些板块的具体内容,下面简单例举如下:

  • Backend,后端
  • Data Types, Functions, & Operators 数据类型,函数和操作符
  • Indexing & Constraints, 索引和约束
  • SQL,结构化查询语言
  • Data Definition Language (DDL), 数据定义
  • Performance, 性能
  • JSON
  • Partitioning & Inheritance, 分区和继承
  • Views & Materialized Views, 视图和实体化视图
  • Replication,数据复制
  • Backup, Restore, & Data Integrity,备份恢复和数据集成
  • Data Import & Export,数据导入导出
  • Configuration Management, 配置管理
  • Security, 安全性
  • Transactions and Visibility, 事务和可见性
  • VACUUM and Maintenance, 清空和维护
  • Foreign Data Wrappers, 外部数据封装
  • Custom Functions, Stored Procedures, & Triggers,自定义函数,存储过程和触发器
  • Procedural Languages,过程语言
  • Extensions,扩展
  • Internationalisation, 国际化
  • Client Applications,客户端应用
  • Additional Modules (contrib), 附加模块
  • Network, 网络
  • Platforms,平台

通过了解这些板块和构成,可以帮助我们了解和积累以下信息和认知:

  • Postgres中,大的功能模块和子系统是如何分类的
  • 我们日常涉及到的细节化的功能特性,应当归类于那些板块
  • 一个完善成熟的关系型数据库系统,应当有那些部分组成
  • 相比于其他的数据库系统,Postgres有那些独特的功能,或者缺失的特性
  • 快速检索和查询相关的功能特性的定义和内容
  • 可以感受和理解Postgres开发和产品发布的节奏和策略
  • 也可以感受Postgres技术发展和演进的过程

在最近的两个版本中,有那些重要的新特性

现有(截至2024-08-27)的最新的两个大版本中,17版本还处于Beta3阶段,16.4已经是可用的正式版本。基于功能特性矩阵,笔者简单总结了一下:

  • pg_stat_checkpointer system view: 统计检查点系统视图
  • pg_stat_io - I/O metrics view: IO指标视图
  • pg_wait_events system view: 等待事件系统视图
  • Parallelized CREATE INDEX for BRIN indexes: BRIN索引创建并行执行
  • ANY_VALUE aggregate: ANY_VALUE聚合
  • Non-decimal integer literals:非数值整数字面量
  • SYSTEM_USER: 系统用户
  • Underscores (_) for thousands separators: 下划线分隔千分位
  • Incremental sort for SELECT DISTINCT: 选择去重的增量排序
  • Load balancing for libpq / psql: libpq负载均衡
  • Parallel FULL and RIGHT joins: 并行FULL和RIGHT连接
  • SIMD support for ARM: ARM平台支持SIMD
  • SIMD support for x86: X86平台支持SIMD
  • SQL/JSON constructors: SQL/JONS构造器
  • SQL/JSON IS JSON: IS JSON方法
  • Logical replication avoids replication loops: 逻辑复制避免复制循环
  • Logical replication from standbys: 从替补系统逻辑复制
  • Logical replication initial sync using binary protocol: 逻辑复杂同步使用二进制协议
  • Logical replication lookups with additional indexes: 逻辑复杂查找附加索引
  • Logical replication parallel apply of transactions
  • Include directives for pg_hba.conf and pg_ident.conf
  • Regular expression matching in pg_hba.conf and pg_ident.conf:配置文件支持正则匹配
  • Client-specified requirements for authentication: 客户端指定认证需求
  • Kerberos credential delegation: Kerberos凭据委托
  • Support using the client's OS trusted CA: 支持客户端OS的CA
  • Page freezing optimizations:页冻结优化
  • Radix tree memory structure for vacuum: Vacuum操作使用Radix树内存结构
  • psql \bind: psql bind命令,执行SQL绑定参数

可以看到,大部分都是和性能、安全和新型硬件适配相关的内容,中间有几个亮点:

  • 对于SIMD(单指令多数据) CPU的支持,这是现代化CPU的重要特性,对其支持可以大大提升代码数据处理性能
  • 更完善的逻辑复制特性
  • 增强系统的管理和维护功能
  • 协议和客户端安全提升
  • 持续的底层系统优化,并行处理,增量处理,负载均衡...

除了了解Postgres的设计和结构之外,还能用来做什么

笔者经常用这个功能矩阵,来了解和学习Postgres在不同版本中,提供了那些新的功能特性。以及某些特性,它的版本支持和演进的情况是怎么样的。

例如我们都知道现在Postgres支持Merge语句了,但从下面的图表我们才能直观的看到,其实是从15版本才开始的。

PostgreSQL技术问答40 - Feature Matrix 功能特性矩阵本文分享了一个Postgres官方文档中

从这个列表中我们也可以看到,Postgres已经是一个非常完整和成熟的数据库系统了。最近的这些版本,新增和改进的特性,都是很细节化的,或者更好更通用的实现。也可以各个数据库系统之间,也在参照对方,对自己进行改进和完善。所以,在这个意义上,现有成熟主流的数据库系统,对于一般的应用需求,在功能特性这个维度,并没有太大的差异。

当然基于市场和定位的考虑,它可能会原生缺乏一些企业级的功能(例如原生的高可用性和分布式)。但作为一个非常强大和稳定的核心,就和Linux的生态系统一样,可以提供给一些第三方的专业方案商有一些扩展和发挥的空间,这对于整个生态也是有益的。

小结

本文分享了一个Postgres官方文档中,一个重要而有趣的内容和信息板块-Feature Matrix,功能特性矩阵。从这个内容板块中,我们可以看到和理解Postgres的系统架构和功能板块的设计。

转载自:https://juejin.cn/post/7407361968925753385
评论
请登录