背景

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

The world's most advanced open source database.

那么它从何而来呢?

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

一、功能方面

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 前世今生》

《数据库选型思考》

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

为什么PostgreSQL是最先进的开源数据库相关推荐

  1. PostgreSQL入门(一)——世界上最先进的开源数据库

    前言 首先声明PostgreSQL声称自己是世界上最先进的开源数据库,但是我刚刚接触这个sql,公司原本使用的是orcale,现在的系统都在做兼容PostgreSQL数据库,可能会逐步的替代oracl ...

  2. MySQL与PostgreSQL:该选择哪个开源数据库?哪一个更好?

    Naresh Kumar是一位软件工程师与热情的博主,对编程与新事物充满了激情和兴趣.近日,Naresh撰写了一篇博文,对开源世界最常见的两种数据库MySQL与PostgreSQL的特点进行了详尽的分 ...

  3. postgresql点云las_云数据库 PostgreSQL-最先进的开源数据库-关系型数据库-价格-购买 - 阿里云...

    {"tplChild2":[{"action":[{"spm":"pg-2c-4gb","btnText&qu ...

  4. php postgresql linux,系统运维|在 Ubuntu 上安装世界上最先进的开源数据库 PostgreSQL 9.4 和 phpPgAdmin...

    简介 PostgreSQL 是一款强大的,开源的,对象关系型数据库系统.它支持所有的主流操作系统,包括 Linux.Unix(AIX.BSD.HP-UX,SGI IRIX.Mac OS.Solaris ...

  5. 2019年开源数据库报告发布:MySQL仍卫冕!

    题图:https://scalegrid.io 墨墨导读:3月初,ScaleGrid发布了数据库趋势报告:SQL打败NoSQL,MySQL最受欢迎. "几十年来,SQL一直领先于非关系型数据 ...

  6. 2019 年开源数据库报告发布:MySQL 仍卫冕!

    想了解最新的开源数据库技术趋势?一文Get! 作者 | Kristi Anderson 译者 | ScottJiang,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 如果 ...

  7. 开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表

    开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表

  8. 比较3个开源数据库:PostgreSQL,MariaDB和SQLite

    在现代企业技术世界中,开源软件已牢固地确立了自己作为不可忽视的最大力量之一的地位. 毕竟,由于开源运动的出现,出现了一些最大的技术发展. 不难理解为什么:尽管基于Linux的开源网络标准可能不像专有选 ...

  9. 世界上功能最强大的开源数据库-PostgreSQL

    转载自:https://www.lzfkj.vip/post/22 文章目录 简述 PostgreSQL 特性 安装 源码安装 安装后所常见到的错误 1.提示相关命令不存在 2.提示连接不了数据库 3 ...

最新文章

  1. 两步完成项目定时启动,java项目定时启动
  2. SecureCRT窗口输出代码关键字高亮设置
  3. Android不是内部或外部指令
  4. C-Power 自主无人海上电力系统有望通过高效能源传输及远程高带宽通信技术,开启新的海上应用
  5. BlockChain: 区块链入门课程 -- 区块链适用于移动性 分享和收费案例
  6. linux 源码搭建lnmp_详解CentOS 7.0源码包搭建LNMP 实际环境搭建
  7. C++中的接口继承和实现继承
  8. HDU 4442 Physical Examination(关于贪心排序)
  9. 39页第6题 求贷款的金额
  10. MyBatis的基本增删改查及条件操作及main方法调用
  11. c语言ascii字母比较大小,C语言中,大写字母M的ASCII码值比小写字母m的ASCII码值大。...
  12. Java、JSP在线问卷调查系统的分析与实现
  13. 数字信号处理-希尔伯特变换
  14. 【BUgStation】RStudio rsession.ese无法找到入口通过更新R解决
  15. bandwagonhost.com (***)机房网速比较
  16. Mybatis源码学习-MapperMethod
  17. THREEJS导入外部OBJ+MTL后内存优化
  18. SSM中mybtis报错### The error may involve defaultParameterMap ### The error occurred while setting param
  19. Matlab_simulink绘制伯德图从选型到出图
  20. Tiktok直播遇到的常见十大问题

热门文章

  1. html 格式化 vim,代码格式化插件
  2. c语言用指针删除链表free,leetcode剑指 Offer 18(删除链表的节点)--C语言实现
  3. C++socket编程(五):5.2 tcp编程总结
  4. c++ ado操作mysql_利用ADO在C++下操作access数据库
  5. python如何搭建环境_Python基础环境如何搭建
  6. 利用计算机诊断ct故障,计算机在CT室工作中的应用及管理
  7. mysql第四步安装失败_MySQL8.0版本的安装以及解决安装后MySQL服务无法启动的问题...
  8. javascript Node对象
  9. go语言 字符串处理
  10. Java Servlet ServletContext