为什么PostgreSQL是"最先进的开源数据库"

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
简介:

背景

打开PostgreSQL网站,你会看到这样的flag。

The world's most advanced open source database.

pic

那么它从何而来呢?

从个人对数据库的角度,在几个方面来分析一下

一、功能方面

1 数据处理能力 - 高级SQL特性

1、窗口查询

2、聚合查询,支持WITHIN GROUP、grouping sets, rollup, cube等

3、CTE, 递归查询

4、merge,upsert (on conflict)语法

5、继承

6、重写规则

7、物化视图

8、异步消息

9、advisory 锁

2 数据处理能力 - 丰富类型

除了常见类型还包括扩展类型

1、数值(整型、任意长度精度数值、浮点、序列)

2、时间、日期、时间戳

3、字符串

4、货币

5、字节流

6、布尔

7、枚举

8、几何

9、网络

10、比特流

11、全文检索

12、UUID

13、XML

14、JSON

15、数组

16、复合

17、范围

18、大对象

19、K-V类型

20、多维类型

21、树类型

22、加密类型

23、模糊查询加速类型

24、扩展类型,见扩展章节

3 数据处理能力 - 丰富函数

1、科学计算相关函数、随机函数、三角函数

2、数据集生成函数 SRF

3、几何(距离、面积、交错、支点、位置等)

4、字符串格式化、处理、编码转换、等操作函数

5、字节流处理函数

6、比特流处理函数

7、正则表达式处理函数

8、全文检索处理函数

9、JSON类型处理函数

10、枚举、网络、XML类型处理函数

https://www.postgresql.org/docs/10/static/functions-net.html

https://www.postgresql.org/docs/10/static/functions-xml.html

11、序列

12、数组处理函数(是否相交、包含、不包含、差集、交集、等)

13、范围类型处理函数(是否相交、包含、不包含、差集、交集、等)

14、条件表达式

15、子查询

16、行、数组构造器

17、聚合函数

18、窗口函数

19、触发器

20、事件触发器

4 数据快速检索能力 - 先进索引

1、函数、表达式索引

2、多列索引

3、多索引合并(bitmapAnd, bitmapOr)

4、部分索引

5、B-Tree 索引

6、hash 索引

7、GIN 倒排索引

8、GiST 通用索引

9、SP-GiST 空间分区通用索引

10、BRIN 块级索引

11、RUM 增强全文索引

12、BLOOM 布隆过滤索引

13、zombodb elasticSearch索引接口

14、b-tree, gist 合体索引

15、b-tree, gin 合体索引

16、《PostgreSQL 10.0 preview 功能增强 - 唯一约束+附加字段组合功能索引》

17、《PostgreSQL 10.0 preview 优化器改进 - 不完整索引支持复合排序》

18、《PostgreSQL 10.0 preview 性能增强 - 间接索引(secondary index)》

5 数据处理能力 - 高级编程特性

1、python存储过程

2、pgsql存储过程

3、sql存储过程

4、tcl存储过程

5、perl存储过程

6、javascript存储过程

7、CUDA存储过程](https://github.com/pg-strom/devel)

8、R存储过程

9、C嵌入式编程

10、分布式存储过程pl/proxy

11、还支持众多语言:ruby, sh, java, php, xslt等等

6 复制能力

1、逻辑流式订阅

2、物理流式复制

3、时间线逆转

7 高级内部特性

1、动态视图、统计信息、状态信息、等待事件

2、TOP SQL

3、

《PostgreSQL 锁等待监控 珍藏级SQL - 谁堵塞了谁》

4、进程进度报告

5、探针

6、扩展探针

7、buffer内窥

8、数据文件内窥

9、REDO内窥

10、钩子

11、流复制控制函数

12、事务快照接口

13、系统管理函数

14、开放协议(流复制协议、等)

15、大版本原地升级

16、plan hint

二、安全、可靠性方面

1、认证模式

秘钥认证

GSSAPI 认证

SSPI 认证

Ident 认证

Peer 认证

LDAP 认证

RADIUS 认证

Certificate 认证

PAM 认证

BSD 认证

2、行安全策略

3、视图栅栏

4、集群、库、表空间、schema、对象、角色 多级权限

5、时间点恢复

6、块级增量备份

https://github.com/postgrespro/pg_probackup

7、流式备份

8、异地容灾

9、quorum-based 任意多副本

10、FPW,full_page_write

三、性能方面

1 多核并行计算

https://www.postgresql.org/docs/10/static/parallel-query.html

2 多机并行计算

fdw + inherit + append parallel

https://www.postgresql.org/docs/10/static/postgres-fdw.html

https://www.postgresql.org/docs/10/static/tutorial-inheritance.html

3 黑科技

1、llvm

《PostgreSQL 10.0 preview 性能增强 - 推出JIT开发框架(朝着HTAP迈进)》

2、向量计算

《PostgreSQL 向量化执行插件(瓦片式实现) 10x提速OLAP》

3、列存储

《分析加速引擎黑科技 - LLVM、列存、多核并行、算子复用 大联姻 - 一起来开启PostgreSQL的百宝箱》

4 优化器

1、成本因子接口

2、统计信息

3、自定义统计信息

4、遗传算法

5、nestloop, hash, merge JOIN

6、支持 plain, sorted, hashed, mixed 聚合策略

src/backend/commands/explain.c

7、39种NODE类型

src/backend/commands/explain.c

Agg:  
Append:  
BitmapAnd:  
BitmapHeapScan:  
BitmapIndexScan:  
BitmapOr:  
CteScan:  
CustomScan:  
ForeignScan:  
FunctionScan:  
Gather:  
GatherMerge:  
Group:  
Hash:  
HashJoin:  
IndexOnlyScan:  
IndexScan:  
Limit:  
LockRows:  
Material:  
MergeAppend:  
MergeJoin:  
ModifyTable:  
NamedTuplestoreScan:  
NestLoop:  
ProjectSet:  
RecursiveUnion:  
Result:  
SampleScan:  
SeqScan:  
SetOp:  
Sort:  
SubqueryScan:  
TableFuncScan:  
TidScan:  
Unique:  
ValuesScan:  
WindowAgg:  
WorkTableScan:  

8、支持并行sort(merge sort)

四、SQL兼容性方面

1、SQL:2011

160/179项 SQL:2011 的实现,覆盖率达到 89.4%,另外还有大量扩展。

五、扩展接口方面

1、扩展函数

2、扩展聚合

3、扩展类型

4、扩展操作符

5、扩展索引

6、扩展全文检索词典

7、扩展编程语言

https://wiki.postgresql.org/wiki/PL_Matrix

8、扩展外部数据源

https://wiki.postgresql.org/wiki/Fdw

9、扩展数据采样接口

10、扩展custom scan接口

https://github.com/pg-strom/devel

11、扩展WAL接口

12、扩展GiST索引

13、扩展SP-GiST索引

14、扩展GIN索引

15、扩展BRIN索引

六、横向生态 - 插件

PostgreSQL 的扩展接口丰富,使得在开源、商业生态中有非常多PostgreSQL的扩展插件。

1、内置插件

2、pgxn

3、pgfoundry

4、github

5、独立插件生态:

商业数据库、数据库支持服务公司、用户、个人、高校、应用软件开发商、其他开源社区。

例如 PostGIS, pgrouting, pipelinedb流计算插件, timescaledb时序插件, rdkit化学插件, madlib机器学习插件, plr R语言插件, postbis DNA插件, imgsmlr图像特征插件, pgfingerprint指纹特征插件 等.

七、生态方面

1、内核生态

commitfest

内核

核心组会议

mail list

活跃度

postgresql wiki

postgresql in wiki

2、高校生态

PostgreSQL起源伯克利大学,与高校有非常深的渊源,也被业界贴上了学院派数据库的标签。同时PG社区趋于遵从行业标准设计,代码严谨、工整,许多高校将PG用于数据库教学。

3、开发者生态

4、最终用户生态, user groups

http://cn.bing.com/search?q=postgresql+user+group&qs=n&form=QBLH&sp=-1&pq=postgresql+user+group&sc=0-21&sk=&cvid=A865739EF479477EB27A3A8DB9895CC1

5、技术支持服务生态

全球有很多技术支持服务商业公司,其中不乏PostgreSQL社区的核心贡献者。

5.1、EDB

5.2、2ND

5.3、postgrespro(oleg)

5.4、PGEXPERT

5.5、河马(tom lane)

5.6、cybertec

5.7、阿里云

5.8、stackoverflow

6、全球主要贡献者

八、业务场景

1、功能强大,支持非常多业务场景

《PostgreSQL 179 种场景 - 案例实践》

2、HTAP发展方向

《数据库任督二脉 - 数据与计算的生态融合》

九、其他

功能强大,同时简单易用

《PostgreSQL on Linux 最佳部署手册》

《PostgreSQL 前世今生》

《数据库选型思考》

《数据库选型之 - 大象十八摸 - 致 架构师、开发者》

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
9天前
|
SQL Linux 数据库
|
9天前
|
存储 SQL Oracle
|
5天前
|
缓存 运维 关系型数据库
数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比
经过深入的技术剖析与性能对比,PolarDB-X DN凭借其自研的X-Paxos协议和一系列优化设计,在性能、正确性、可用性及资源开销等方面展现出对MySQL MGR的多项优势,但MGR在MySQL生态体系内也占据重要地位,但需要考虑备库宕机抖动、跨机房容灾性能波动、稳定性等各种情况,因此如果想用好MGR,必须配备专业的技术和运维团队的支持。 在面对大规模、高并发、高可用性需求时,PolarDB-X存储引擎以其独特的技术优势和优异的性能表现,相比于MGR在开箱即用的场景下,PolarDB-X基于DN的集中式(标准版)在功能和性能都做到了很好的平衡,成为了极具竞争力的数据库解决方案。
|
9天前
|
SQL 存储 关系型数据库
关系型数据库PostgreSQL学习
【7月更文挑战第4天】
406 2
|
10天前
|
关系型数据库 分布式数据库 数据库
PolarDB,阿里云的开源分布式数据库,与微服务相结合,提供灵活扩展和高效管理解决方案。
【7月更文挑战第3天】PolarDB,阿里云的开源分布式数据库,与微服务相结合,提供灵活扩展和高效管理解决方案。通过数据分片和水平扩展支持微服务弹性,保证高可用性,且兼容MySQL协议,简化集成。示例展示了如何使用Spring Boot配置PolarDB,实现服务动态扩展。PolarDB缓解了微服务数据库挑战,加速了开发部署,为云原生应用奠定基础。
84 3
|
10天前
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
154 2
|
10天前
|
关系型数据库 分布式数据库 PolarDB
**PolarDB开源指南:构建分布式数据库集群**踏上PolarDB开源之旅,了解如何从零开始搭建分布式集群
【7月更文挑战第3天】**PolarDB开源指南:构建分布式数据库集群**踏上PolarDB开源之旅,了解如何从零开始搭建分布式集群。采用存储计算分离架构,适用于大规模OLTP和OLAP。先准备硬件和软件环境,包括Linux、Docker和Git。然后,克隆源码,构建Docker镜像,部署控制节点和计算节点。使用PDCli验证集群状态,开始探索PolarDB的高性能与高可用性。在实践中深化学习,贡献于数据库技术创新。记得在安全环境下测试。
87 1
|
10天前
|
运维 Cloud Native 安全
荣誉加身!陶建辉被授予 GDOS 全球数据库及开源峰会荣誉顾问
**第二十三届 GOPS 全球运维大会暨 XOps 峰会在京召开,聚焦开源数据库与技术创新。涛思数据CEO陶建辉获GDOS全球数据库及开源峰会荣誉顾问称号,因其在TDengine数据库的开源与研发上的贡献。TDengine,高性能时序数据库,已在多个行业广泛应用,推动数据库技术发展。陶建辉将持续为开源生态和行业创新贡献力量。
17 0
|
17天前
|
存储 关系型数据库 分布式数据库
PolarDB产品使用问题之如何避免在修改数据库的编码格式时出现乱码状况
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
17天前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之如何将实例关联到本地的数据库
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。

相关产品

  • 云原生数据库 PolarDB