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并没有开源。
3、参考
https://github.com/cloudberrydb/cloudberrydb
https://www.modb.pro/doc/100993




