CloudberryDB 制定了演化路線圖(https://github.com/orgs/cloudberrydb/discussions/369)并在逐步改進,這是 Cloudberry Database 發揮獨特價值之處。
計劃、正在進行或已完成的一些工作。
支持輕松升級 PostgreSQL 內核版本。
原有 Greenplum Database 功能實現對 PostgreSQL 內核具有很強的侵入性,導致升級 PostgreSQL 版本非常困難。我們采取當前 PostgreSQL 生態流行的方式,以“擴展插件/Library”模式重構部分功能實現,降低與 PostgreSQL 內核的強耦合度,可以輕松實現 PostgreSQL 內核版本升級。如果你想在 Cloudberry Database 中增加什么功能,都可以像拼積木一樣靈活擴展,這一策略貫穿到整個 Cloudberry Database 設計與開發之中。(已開源)
支持統一管理非結構化數據。
面對 AI 應用帶來的非結構化數據管理挑戰,我們在 Cloudberry Database 中引入了“Directory Table”概念特性,用于存儲、管理和分析非結構化數據對象,實現集中管理和統一處理文檔、音視頻等非結構化數據。在此基礎上,用戶只需要使用簡單的 SQL 語句就可以調用各種計算引擎,實現高效的數據加工和應用開發,降低非結構化語料數據的處理成本。(已開源)
多場景綜合優化性能。
性能優化是個系統工程,涉及到多個方面,不同場景處理方式也不一樣。我們重點推動了,如:
-
??實現向量化,提升查詢性能。當需要處理大規模數據集時,向量化執行引擎可以顯著提高計算效率。通過將數據向量化,可以同時處理多個數據元素,利用并行計算和 SIMD 指令集加速計算過程。我們內部已經實現基于 Cloudberry Database 內核的向量化插件,會明顯提升優化查詢語句的性能。(準備開源)
-
??下推聚集運算。聚集下推是使聚集操作的運算更接近數據源的一種優化技術。目前 Cloudberry Database 已支持將聚集運算下推,即將聚集算子提前到連接算子之前進行計算。在合適的場景下,聚集下推能夠明顯地減少連接算子或者聚集算子的輸入集大小,進而提升算子的執行性能。(已開源)
-
??實現增量物化視圖、自動物化視圖支持查詢優化。(已開源)
-
??增量物化視圖是物化視圖的一種特殊形式,當數據在基礎表中發生變化時(例如插入、更新、刪除操作),增量物化視圖不需要重新計算整個視圖中的所有數據。相反,它只更新那些自上次刷新以來發生變化的部分,這樣可以節省大量的計算資源和時間,顯著提高性能,尤其是在處理大型數據集時。
-
??支持在查詢規劃階段自動使用物化視圖來計算部分或全部查詢(即 AQUMV),這一功能特別適用于在大表上進行的查詢,能顯著提高查詢處理時間。
-
-
??使用 RuntimeFilter 優化 HashJoin 查詢性能。RuntimeFilter 是在執行 HashJoin 運算時,實時產生過濾器 (Filter) 的優化技術,可以在執行 HashJoin 前預先對數據進行篩選,更快地執行 HashJoin。在某些場景下,通過 RuntimeFilter 優化能夠使執行效率翻倍。HashJoin 常用于小表和大表的連接。Cloudberry Database 在執行 HashJoin 運算時,通常基于待連接的兩表中較小的表來構建哈希表,然后循環地根據較大表中的元組,在哈希表中查找連接鍵匹配的元組來實現連接。(已開源)
同時,我們還實現了動態分區消除、針對不同運算符在查詢不同階段予以釋放或重新分配內存、并發創建索引、并發執行查詢、AO/AOCO 索引掃描(IndexScan)支持,以及提供基于規則的查詢優化手段和基于代價的查詢優化手段幫助用戶生成更高效的查詢執行計劃等等。(已開源)
實現行列混合存儲。
我們基于 Cloudberry Database 實現了行列混合存儲方案,該方案結合了行式存儲和列式存儲的優點,旨在提高數據庫的查詢性能,尤其是緩存效率。該方案適合處理大量寫入和頻繁查詢的復雜 OLAP 應用,既適應云環境下基于對象存儲的存儲模型,也能適應線下傳統基于物理文件的存儲方式。(準備開源)
支持全文檢索引擎。
我們使用 ZomboDB 支持 Cloudberry Database 和 Elasticsearch 協同工作,讓 Cloudberry Database 擁有 Elasticsearch 豐富的全文檢索和文本分析能力。ZomboDB 支持大多數 Cloudberry Database 的 SQL 語法,可以管理 Elasticsearch 集群上的索引,并且保證事務層面上文本檢索的正確性。(準備開源)
實現安全增強。
除 PostgreSQL 原有安全插件外,Cloudberry Database 提供了豐富的權限設置選項,滿足不同用戶和不同級別的對象需求,支持配置密碼安全策略,可將策略應用于一個或多個用戶,支持密碼強度檢查;支持數據脫敏或漂白,去除數據中的敏感信息;支持透明數據加密 TDE 功能,提升靜態數據的安全性;除支持常用的 AES 加密算法外,支持國密算法、密文認證等等。(已開源)
支持集群彈性擴縮容。
Greenplum Database 已實現一定的集群擴容功能,Cloudberry Database 在此基礎上將其持續增強,并實現了在集群資源空閑時的集群縮容功能。(已開源)
友好的圖形化管理工具。
我們正在實現 Cloudberry Database 的圖形化管理工具,可支持用戶在圖形界面中部署 Cloudberry Database 集群,可以提供各個粒度包括集群級、表級、Query 級的監控信息,支持 SQL Editor 等。(準備開源)
? 將推動流處理、湖倉一體等方案開源,通過連接器(Connector)或 Foreign Data Wrapper(FDW)形式,從 Kafka 中加載實時數據,或將 Hive 集群數據(含 Iceberg 和 Hudi 表格式)加載到 Cloudberry Database,打通數據倉庫和數據湖;推動適配國產操作系統和服務器等等。
?
一般特性對比
說明
-
在以下表格中,? 代表支持,? 代表不支持。
-
以下表格中的對比,基于 Greenplum 7.0 Beta.3 版本。
功能名 | Cloudberry Database | Greenplum |
---|---|---|
在?EXPLAIN ?的結果中查看 WAL 的使用信息 | ? | ? |
Multiranges 類型 | ? | ? |
B 樹自底向上索引清理 | ? | ? |
GiST的覆蓋索引 (INCLUDE ) | ? | ?(待發布) |
range_agg ?范圍類型聚合函數 | ? | ? |
CREATE ACCESS METHOD | ? | ?(待發布) |
TOAST ?表上的 LZ4 壓縮支持 | ? | ? |
JSONB 通過下標讀取元素 | ? | ? |
配置復制插槽的最大 WAL 保留 | ? | ? |
驗證備份的完整性 (pg_verifybackup ) | ? | ? |
客戶端可以要求 SCRAM 通道綁定 | ? | ? |
Vacuum "緊急模式" | ? | ? |
使用?postgres_fdw ?的證書認證 | ? | ? |
UPSERT | ? | ?(待發布) |
COPY FROM Where | ? | ? |
VACUUM / ANALYZE 跳過鎖定表 | ? | ? |
HASH 分區表 | ? | ? |
CTE (SEARCH ?和?CYCLE ) | ? | ? |
存儲過程 OUT 參數 | ? | ? |
外鍵表的外鍵約束 | ? | ? |
pg_terminate_backend ?的超時參數 | ? | ? |
Coordinator 自動故障轉移 | ? | ? |
支持在 Kubernetes 上部署 | ? | ? |
性能特性對比
功能名 | Cloudberry Database | Greenplum |
---|---|---|
并發重建索引?REINDEX CONCURRENTLY | ? | ? |
聚合運算下推 | ? | ? |
CREATE STATISTICS ?-?OR ?和?IN/ANY ?統計 | ? | ? |
增量排序 | ? | ? |
窗口函數的增量排序 | ? | ? |
查詢流水線 | ? | ? |
BRIN 索引(多最小最大值,bloom) | ? | ? |
查詢并行 | ? | ? |
基于 Abbreviated Keys 進行排序 | ? | ? |
哈希索引的 WAL 支持 | ? | ? |
postgres_fdw ?聚合下推 | ? | ? |
添加列時無需重寫整個表 | ? | ? |
表連接運算支持運行時過濾器 (Runtime Filter) | ? | ? |
AppendOnly 表支持索引掃描 | ? | ? |
安全特性對比
功能名 | Cloudberry Database | Greenplum |
---|---|---|
透明數據加密 (TDE) | ? | ? |
可信擴展 | ? | ? |
SCRAM-SHA-256 | ? | ? |
GSSAPI 時的加密 TCP/IP 連接 | ? | ? |
行級別安全策略 | ? | ? |