資料與儲存 2026 年 4 月 27 日

2026-04-27 — storage_engine 1.0.7 欄位壓縮 TAM、Redis Active-Active 地理故障轉移、Apache Cloudberry 2.1.0

storage_engine 1.0.7:PostgreSQ…

storage_engine 1.0.7:PostgreSQL 的欄位壓縮與列壓縮 Table Access Method

PostgreSQL News Archive · 2026-04-23

storage_engine 1.0.7 是為 PostgreSQL 16–18 設計的擴充套件,透過 PostgreSQL Table Access Method(TAM)API 提供兩種高效能儲存引擎:欄位壓縮(colcompress)與列壓縮(rowcompress)。

Table Access Method API 背景

PostgreSQL 12 引入 Table Access Method(TAM)API,允許第三方實作替代 heap 以外的儲存引擎。storage_engine 是目前少數在生產環境中實際可用的 TAM 實作之一,支援 PostgreSQL 16、17、18。

colcompress:欄位壓縮儲存

CREATE TABLE t (...) USING colcompress; 將資料以欄位(column-major)格式儲存,並進行壓縮。主要特性包括:向量化執行引擎(vectorized execution);chunk 層級的 min/max 剪枝(pruning)用於查詢最佳化;支援平行掃描(parallel scan);MergeTree 式排序能力。在 1M 行、PostgreSQL 18 的序列執行基準測試中,聚合查詢速度最高 10x,壓縮後資料量為 heap 的 1/3–1/5。

rowcompress:列批量壓縮儲存

CREATE TABLE t (...) USING rowcompress; 以列(row-major)格式進行批量壓縮,保留了更接近 heap 的讀寫模式。支援 DELETE/UPDATE(透過 deleted bitmask 實作)、平行掃描、LRU 解壓縮快取,適用於需要混合讀寫(HTAP)的場景。GIN/JSONB 查詢完整支援。

使用限制

目前 colcompress 不支援 UPDATE/DELETE(仍需透過 MVCC 層間接處理),適合純分析(append-only)工作負載。rowcompress 的 LRU 快取大小需根據工作集調整,預設值可能不足。

原始來源:PostgreSQL News – storage_engine 1.0.7GitHub saulojb/storage_engine


Redis Active-Active 用戶端地理故障轉移:架構與實作細節

Redis Blog · 2026-04-23

Redis 為 Jedis、Lettuce(7.4.0+)、redis-py 三大用戶端函式庫新增了用戶端側地理故障轉移(client-side geographic failover)支援,讓 Redis Active-Active 架構在不依賴 DNS TTL 或基礎設施層負載均衡器的情況下實現自動區域切換。

架構設計

加權端點(Weighted Endpoints):使用者設定一組具有優先級的端點清單。用戶端函式庫持續監控所有端點的健康狀態,流量路由至優先級最高的健康端點,實現地理分佈的偏好區域選擇。

熔斷器(Circuit Breaker):持續監控活躍端點的健康狀態;當工作負載失敗率超過可設定閾值時觸發,停止向不健康端點發送請求,防止級聯故障。

健康檢查機制

PingHealthCheck(預設):使用 Redis PING 命令,Redis Software 與 Redis Cloud 均適用。

LagAwareHealthCheck(進階):僅 Redis Software 支援。在故障恢復(failback)前檢查資料複寫延遲(replication lag),確保回切至主要端點時資料一致性達標,避免在資料尚未同步完成時過早切換。

自訂健康檢查:透過 REST API 可用性請求實作,支援外部服務依賴。

故障轉移與回切流程

熔斷器或健康檢查偵測到失敗時,用戶端切換至優先級清單中的下一個健康端點。用戶端持續監控所有端點(包含不健康的),待最高優先級端點恢復時自動回切。Active-Active 架構基於 CRDT(Conflict-Free Replicated Data Type)衝突解析確保最終一致性。

相對 DNS 方案的優勢

DNS TTL 方案的切換延遲由 TTL 決定(通常 60–300 秒),用戶端側方案可在秒級內完成切換。無需修改 DNS 設定或基礎設施層的負載均衡器,開發者在程式碼層直接控制故障轉移行為,且支援 Jedis、Lettuce 7.4.0+、redis-py 三種主流用戶端。

原始來源:Redis Blog – Client-Side Geographic Failover for Redis Active-Active


Apache Cloudberry 2.1.0:PostgreSQL 兼容的 MPP 資料庫新版本

PostgreSQL News Archive · 2026-04-19

Apache Cloudberry(前身為 Greenplum 的開源分支)2.1.0 發布,此版本針對分析與 AI 工作負載進行了多項改進,維持完整的 PostgreSQL 線協議(wire protocol)相容性。

MPP 架構背景

Cloudberry 採用無共享(shared-nothing)MPP(Massively Parallel Processing)架構,由一個 Coordinator 節點與多個 Segment 節點組成。查詢在 Coordinator 完成計畫後,以並行方式分發至各 Segment 執行,再將結果匯聚回傳。由於完整支援 PostgreSQL 語法與連線協議,現有的 PostgreSQL 工具、ORM、驅動程式無需修改即可使用。

2.1.0 主要改進

本版本強化了對向量化查詢引擎的整合,提升分析型工作負載的吞吐量;改進了 AI 工作負載的資料流處理,包括對大型特徵矩陣的批次載入與分散式特徵工程;以及對 PostgreSQL 16 核心程式碼的對齊更新,修復了若干穩定性問題。

原始來源:PostgreSQL News – Apache Cloudberry 2.1.0


End of article
0
Would love your thoughts, please comment.x
()
x