引言
在當今數據驅動的時代,企業對數據庫系統提出了更高要求:既需要高效處理聯機事務處理(OLTP)業務,又需要對海量數據進行快速分析(OLAP),以支持實時決策。云原生HTAP(Hybrid Transactional/Analytical Processing,混合事務/分析處理)數據庫應運而生,旨在統一這兩種負載。阿里云自主研發的PolarDB,通過其In-Memory Column Index(IMCI,內存列存索引)技術,成功構建了云原生HTAP數據庫系統。本白皮書的第一部分將深入解析PolarDB IMCI的核心基石:列式數據是如何存儲與處理的,及其在數據處理和存儲服務中的實現。
一、列式存儲:架構的基石
傳統行式數據庫將同一行的所有列數據連續存儲,適合頻繁的增刪改查事務。對于分析型查詢,往往只涉及表中少數幾列,行式存儲會導致大量無關數據被加載進內存,造成I/O帶寬和CPU緩存資源的巨大浪費。
PolarDB IMCI采用了純列式存儲(Columnar Storage)作為其分析加速的核心:
- 數據組織方式:表中的每一列數據被獨立存儲在一個連續的物理塊中。例如,一張包含“訂單ID”、“用戶ID”、“商品ID”、“金額”、“時間”的表,在列存中,所有“金額”值會被集中存儲在一起,形成一個獨立的數據單元。
- 存儲結構:IMCI的列式數據并非簡單平鋪,而是采用了高度優化的編碼格式(如字典編碼、行程編碼等)和壓縮算法。這不僅極大減少了磁盤和內存的占用,更重要的是,壓縮后的數據在參與計算時通??梢詿o需解壓或僅需部分解壓,顯著提升了CPU計算效率和內存帶寬利用率。
- 與行存共存:PolarDB的HTAP架構并非取代原有行式存儲(用于OLTP),而是新增了列式存儲副本。數據通過日志流實時、異步地從行存同步到列存,從而保證分析查詢能訪問到近乎實時的數據,同時不影響前端事務處理的性能。
二、列式數據的處理:向量化執行引擎
高效的列式存儲需要匹配專用的查詢處理引擎才能發揮最大威力。PolarDB IMCI采用了業界先進的向量化執行引擎(Vectorized Execution Engine),摒棄了傳統數據庫一次處理一行的“火山模型”。
- 批處理模式:向量化引擎以“批”(Batch)為單位處理數據,每次操作處理列數據中的一個數據塊(例如1024個值)。這與列式存儲的物理布局完美契合,可以一次性將一列中的連續數據塊加載到CPU緩存。
- SIMD指令優化:現代CPU提供的單指令多數據流(SIMD)指令,允許一條指令同時對多個數據執行相同操作。列存中連續、類型統一的數據是應用SIMD優化的理想場景。IMCI的引擎充分利用SIMD,對比較、聚合、算術運算等操作進行極致加速,將CPU的并行計算能力發揮到極致。
- 減少虛函數調用:向量化處理按列進行,整個批量的操作可以通過緊湊的循環完成,避免了傳統行處理模型中大量的條件判斷和虛函數調用開銷,極大提升了CPU流水線的效率。
三、數據處理與存儲服務:云原生的融合
PolarDB IMCI的列式數據存儲與處理并非孤立存在,而是深度融入其云原生架構,構成統一、彈性、高可用的數據處理與存儲服務。
- 計算與存儲分離:PolarDB基于Cloud-Native架構,實現了計算節點(處理SQL請求、執行事務或分析)與存儲節點(持久化數據)的分離。列式存儲作為共享存儲層的一部分,可以被所有計算節點(包括專用于OLAP的只讀列存節點)高速訪問。這種分離使得計算資源可以根據OLTP和OLAP的負載獨立、彈性地擴縮容。
- 實時同步與服務化:行存與列存之間的數據同步通過高性能日志回放機制實現,延遲可低至毫秒級。對用戶而言,列存數據作為一項“服務”透明可用。用戶提交的分析查詢,優化器會根據代價自動選擇是訪問行存還是列存索引,無需修改應用。
- 統一的服務體驗:在PolarDB的HTAP服務中,用戶通過一個統一的數據庫端點(Endpoint)進行訪問。系統內部自動將事務路由到行存計算節點,將復雜分析查詢路由到搭載IMCI的列存計算節點。數據處理(計算)與數據存儲(行/列存)作為后端一體化的服務提供,保障了數據強一致性和服務的連續性。
- 智能自適應:IMCI支持動態增減列,并能根據查詢負載模式自動進行數據重組和優化,使得存儲與處理服務具備自適應性。
結論
PolarDB IMCI通過創新的列式數據存儲與向量化處理技術,為云原生數據庫注入了強大的實時分析能力。列式存儲以其高效壓縮和IO友好性奠定了高性能分析的基礎;向量化執行引擎則充分利用現代硬件特性,將列存的數據布局優勢轉化為極致的查詢速度。這一切最終通過云原生的計算存儲分離架構,被封裝成彈性、透明、統一的數據處理與存儲服務,使得企業能夠在一個數據庫系統中同時應對高并發事務與即席大數據分析的雙重挑戰,真正實現了HTAP的價值。
(此為白皮書系列第一部分,后續部分將深入探討查詢優化、資源隔離、實時一致性等關鍵技術。)