GreenPlum(GPDB)是一款基于PostgreSQL(PgSQL)的开源分布式数据库。目前GPDB7已发布beta4,PgSQL内核支持到了12.12,但PgSQL优秀内核特性比如并行查询仍旧不支持。经查询PgSQL中并行代码已存在于GPDB中,但执行计划生成这块却不支持。这就比较可惜了。现在有款国产分布式数据库CloudberryDB基于GPDB,继承了GPDB优秀特性,并兼容PgSQL14.4的内核,支持了很多GPDB不具备的特性。
1、CloudberryDB vs. GPDB7
1.1通用特性
特性名 |
说明 |
Cloudberrydb |
GPDB7 beta3 |
Explain (WAL) support |
在执行计划中显示SQL语句生成的WAL大小,PgSQL13中增加的特性 |
支持 |
不支持 |
Multiranges |
PgSQL14引入支持 |
支持 |
不支持 |
B-tree bottom-up index deletion |
PgSQL14引入支持 |
支持 |
不支持 |
Covering indexes for GiST (INCLUDE) |
PgSQL12引入支持 |
支持 |
即将支持 |
The range_agg range type aggregation function |
PgSQL14引入支持 |
支持 |
不支持 |
CREATE ACCESS METHOD |
PgSQL12引入支持 |
支持 |
即将支持 |
LZ4 compression for TOAST tables |
PgSQL14引入支持 |
支持 |
不支持 |
JSONB subscripting |
PgSQL14引入支持 |
支持 |
不支持 |
Configure the maximum WAL retention for replication slots |
PgSQL13引入支持 |
支持 |
不支持 |
Verify backup integrity (pg_verifybackup) |
PgSQL13引入支持 |
支持 |
不支持 |
Client can require SCRAM channel binding |
PgSQL13引入支持 |
支持 |
不支持 |
Vacuum "emergency mode" |
PgSQL14引入支持 |
支持 |
不支持 |
Certificate authentication with postgres_fdw |
PgSQL13引入支持 |
支持 |
不支持 |
UPSERT |
-- |
支持 |
即将支持 |
COPY FROM Where |
PgSQL12引入支持 |
支持 |
不支持 |
VACUUM / ANALYZE Skip Lock Table |
PgSQL12引入支持 |
支持 |
不支持 |
HASH partitioned table |
PgSQL11引入支持 |
支持 |
不支持 |
CTE(SEARCH and CYCLE) |
PgSQL14引入支持 |
支持 |
不支持 |
Procedure OUT parameters |
PgSQL14引入支持 |
支持 |
不支持 |
CHECK constraints for foreign tables |
-- |
支持 |
不支持 |
Timeout parameter for pg_terminate_backend |
PgSQL14引入支持 |
支持 |
不支持 |
Auto failover for Master |
应该是自己开发的 |
支持 |
不支持 |
Kubernetes deployment support |
应该是自己开发的 |
支持 |
不支持 |
1.2性能相关特性
特性名 |
说明 |
Cloudberrydb |
GPDB7 beta3 |
REINDEX CONCURRENTLY |
-- |
支持 |
不支持 |
Aggregation pushdown |
-- |
支持 |
不支持 |
CREATE STATISTICS - OR and IN/ANY statistics |
-- |
支持 |
不支持 |
Incremental sort |
-- |
支持 |
不支持 |
Incremental sort for window functions |
-- |
支持 |
不支持 |
Query pipelining |
-- |
支持 |
不支持 |
BRIN Index(multi-minmax, bloom) |
-- |
支持 |
不支持 |
Query parallelism |
-- |
支持 |
不支持 |
Abbrevated keys for sorting |
-- |
支持 |
不支持 |
Hash Index WAL support |
-- |
支持 |
不支持 |
postgres_fdw aggregation pushdown |
-- |
支持 |
不支持 |
No need to rewrite the whole table when adding a column |
-- |
支持 |
不支持 |
Runtime Filter for Join |
-- |
支持 |
不支持 |
Index Scan for the AppendOnly table |
-- |
支持 |
即将支持 |
1.3安全相关特性
特性名 |
说明 |
Cloudberrydb |
GPDB7 beta3 |
Transparent Data Encryption (TDE) |
-- |
支持 |
不支持 |
Trusted extensions |
-- |
支持 |
不支持 |
SCRAM-SHA-256 |
-- |
支持 |
不支持 |
Encrypted TCP/IP connection when GSSAPI |
-- |
支持 |
不支持 |
Row-level security policy |
-- |
支持 |
不支持 |
2、CloudberryDB向量化
2020年PostgreSQL中国技术大会上,Cloudberry提到进行了向量化技术探索。采用Apache Arrow作为其列存,基于此进行向量化引擎改造。
采用Arrow实现向量化执行的优势:零拷贝的列式计算引擎;适合向量执行的数据内存格式,便于SIMD指令使用;尽可能降低了列式数据做JIT的拆分和组合开销,优化器决定是否选择JIT。
当然它也是将向量化执行器做成了一个插件,尽量减少对内核的入侵。对各个算子进行了重写包括:Scan、Agg、Sort、Motion、Project。
不过这块HashData并没有开源。