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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

背景

打开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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
29天前
|
关系型数据库 分布式数据库 数据库
成都晨云信息技术完成阿里云PolarDB数据库产品生态集成认证
近日,成都晨云信息技术有限责任公司(以下简称晨云信息)与阿里云PolarDB PostgreSQL版数据库产品展开产品集成认证。测试结果表明,晨云信息旗下晨云-站群管理系统(V1.0)与阿里云以下产品:开源云原生数据库PolarDB PostgreSQL版(V11),完全满足产品兼容认证要求,兼容性良好,系统运行稳定。
|
1月前
|
关系型数据库 分布式数据库 数据库
PolarDB常见问题之数据库不能自己减少节点如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
1月前
|
缓存 关系型数据库 分布式数据库
PolarDB常见问题之数据库cpu突然飙高如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
1月前
|
数据库 开发者
参与TiDB社区,共筑开源数据库的未来
【2月更文挑战第25天】TiDB社区作为开源数据库项目的重要一环,汇聚了众多数据库爱好者与开发者。本文旨在鼓励读者积极参与TiDB社区,通过贡献代码、分享经验、参与讨论等方式,共同推动TiDB的发展。文章将介绍TiDB社区的特点、参与方式以及贡献的意义,帮助读者了解并融入这个充满活力的开源社区。
|
4天前
|
关系型数据库 OLAP 分布式数据库
「杭州*康恩贝」4月26日PolarDB开源数据库沙龙,开启报名!
4月26日周五,PolarDB开源社区联合康恩贝将共同举办开源数据库技术沙龙,本次沙龙我们邀请了众多数据库领域的专家,期待大家的参与!
「杭州*康恩贝」4月26日PolarDB开源数据库沙龙,开启报名!
|
14天前
|
运维 关系型数据库 分布式数据库
「合肥 * 讯飞」4 月 19 日 PolarDB 开源数据库沙龙,报名中!
4月19日周五,PolarDB开源社区联合科大讯飞共同举办开源数据库技术沙龙,本次沙龙我们邀请了众多数据库领域的专家,期待大家的参与!
「合肥 * 讯飞」4 月 19 日 PolarDB 开源数据库沙龙,报名中!
|
1月前
|
存储 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB突然有大量服务连不上数据库如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
1月前
|
NoSQL 关系型数据库 Linux
Star 1.6k!当Web遇上Linux和数据库!一站式管理平台的开源之旅!
Star 1.6k!当Web遇上Linux和数据库!一站式管理平台的开源之旅!
|
1月前
|
数据采集 JSON 小程序
GitHub 开源数据库 chinese-poetry,最全中文诗歌古典文集数据库
GitHub 开源数据库 chinese-poetry,最全中文诗歌古典文集数据库
|
1月前
|
存储 关系型数据库 MySQL
TiDB与MySQL、PostgreSQL等数据库的比较分析
【2月更文挑战第25天】本文将对TiDB、MySQL和PostgreSQL等数据库进行详细的比较分析,探讨它们各自的优势和劣势。TiDB作为一款分布式关系型数据库,在扩展性、并发性能等方面表现突出;MySQL以其易用性和成熟性受到广泛应用;PostgreSQL则在数据完整性、扩展性等方面具有优势。通过对比这些数据库的特点和适用场景,帮助企业更好地选择适合自己业务需求的数据库系统。

相关产品

  • 云原生数据库 PolarDB