本文介紹PolarDB高壓縮引擎(X-Engine)的產品優勢、架構及適用場景。
專家面對面
關于高壓縮引擎X-Engine的使用問題和RDS X-Engine遷移至PolarDB X-Engine問題請進釘釘群咨詢,群號:24490017825。
挑戰和訴求:歷史數據歸檔
歷史數據歸檔的挑戰
大部分業務數據的讀寫特征,都是最新產生的數據會被更頻繁地讀取或更新,而更久之前的數據(如1年前的聊天記錄或訂單信息)很少被訪問。 隨著業務發展,數據庫系統中會積累大量訪問頻率很低甚至為0的數據,這些數據的積累容易導致如下問題:
歷史數據和最新數據存儲在同一數據庫系統中,導致磁盤空間不足。
大量數據共享數據庫系統的內存、緩存空間、磁盤IOPS等,導致性能問題。
數據量太大導致數據備份時間過長甚至備份失敗;同時如何存放備份數據也是一個問題。
針對如上問題,一種做法是對歷史數據做歸檔,將長期不使用的數據遷移至以文件形式存儲的廉價存儲設備上,如阿里云OSS或者阿里云數據庫DBS服務。然而,在實際業務中,歷史數據并不完全是靜態的,針對幾個月甚至幾年前的歷史數據,依舊可能存在實時地、低頻地查詢甚至更新需求。例如,在阿里巴巴內部,對淘寶或天貓歷史訂單的查詢、對企業級辦公軟件釘釘歷史聊天記錄的查詢或對菜鳥海量歷史物流訂單的查詢等。
歷史數據歸檔的訴求
為了解決歷史數據的讀取和更新問題,可以使用一個單獨的數據庫用來存儲歸檔的數據,即高壓縮引擎(X-Engine)。業務對單獨的高壓縮引擎(X-Engine)一般有如下訴求:
具備大容量存儲空間,支持業務持續將線上數據保存到高壓縮引擎(X-Engine)中,而無需擔心容量問題。
與在線數據庫系統使用相同的訪問接口,如都支持MySQL協議等,確保應用程序端無需修改任何代碼即可同時訪問在線庫和高壓縮引擎(X-Engine)。
成本低廉,如支持通過壓縮減少數據所占磁盤空間、使用廉價存儲介質等,確保可以使用較小的代價保存海量的數據。
具備一定的讀寫能力,能夠滿足低頻讀寫的需求。
MySQL作為世界上使用最廣泛的開源數據庫系統,一直缺乏一個既能滿足大容量低成本要求,又具備一定讀寫能力的歷史數據歸檔存儲方案。雖然業界曾經推出過一些高壓縮引擎,如TokuDB、MyRocks等,但受限于單物理機磁盤容量限制,存儲的數據量有限。
解決方案:PolarDB高壓縮引擎(X-Engine)
為應對如上歷史數據歸檔存儲方面的挑戰和訴求,PolarDB基于如下技術創新和突破,推出了高壓縮引擎(X-Engine)產品系列:
阿里巴巴自研的基于LSM-tree架構的存儲引擎X-Engine提供了強大的數據壓縮能力,滿足了歸檔數據庫低存儲成本的要求。通過LSM-Tree(Log-Structured Merge-Tree)層次化架構和Zstandard(ZSTD)壓縮算法實現了更高的數據壓縮率,對比使用InnoDB作為存儲引擎,最高可節省70%的存儲空間。更多關于X-Engine存儲引擎的詳情,請參見X-Engine簡介。但由于采用了X-Engine引擎,在使用高壓縮引擎(X-Engine)時也存在一些限制(尤其是與MySQL的兼容性限制),具體限制請參見使用說明。
PolarDB借助于共享分布式存儲服務,實現了存儲容量在線平滑擴容,同時計算資源和存儲資源間采用高速網絡互聯,并通過RDMA協議進行數據傳輸,使I/O性能不再成為瓶頸。集成到PolarDB的X-Engine引擎同樣獲得了這些技術優勢。
如下技術創新將X-Engine移植進PolarDB,從而進入PolarDB雙引擎時代:
合并X-Engine的事務WAL日志流和InnoDB的REDO日志流,實現了一套日志流和傳輸通道同時服務于InnoDB引擎和X-Engine引擎,管控邏輯以及與共享存儲的交互邏輯無需做任何改變,同時新增其他引擎時也可以復用這套架構。
將X-Engine的IO模塊對接到PolarDB InnoDB所使用的用戶態文件系統PFS上,實現了InnoDB與X-Engine共享同一個分布式塊設備。同時依靠底層分布式存儲實現了快速備份。
高壓縮引擎(X-Engine)計算節點架構
高壓縮引擎(X-Engine)采用多節點架構基于共享存儲實現了一寫多讀,集群中有一個主節點(可讀可寫)和至少一個只讀節點,支持獨享規格和通用規格兩個子系列。
高壓縮引擎(X-Engine)多節點架構可用于保障集群的高可用,當系統發生故障時,可讀寫的主節點和只讀節點之間會自動進行故障切換(Failover),保證了服務可用性不低于99.99%。高壓縮引擎(X-Engine)多節點架構圖如下:
產品優勢
超大存儲容量。200 TB的存儲空間加上X-Engine數據壓縮能力,可提供500 TB以上的原始數據存儲容量,同時存儲空間采用Serverless方式,購買時無需選擇容量,隨著數據增長而在線自動擴容,只按實際數據量大小收費。
PolarDB高壓縮引擎(X-Engine)與官方MySQL的協議一致,相比于將歷史數據備份到HBase等NoSQL產品,應用程序端無需修改任何代碼即可同時訪問在線庫和高壓縮引擎(X-Engine)。
借助PolarDB底層共享存儲的快速備份能力,實現對海量數據的快速備份,備份數據可以上傳到OSS等廉價存儲設備,確保數據不丟失。
高壓縮引擎(X-Engine)多節點架構借助X-Engine引擎的數據壓縮能力,不僅能夠有效降低存儲成本,還可用于保障集群的高可用。當系統發生故障時,可讀寫的主節點和只讀節點之間會自動進行故障切換(Failover),保證了服務可用性不低于99.99%。
在Sysbench測試場景下,與集群版的單InnoDB引擎相比較,這種雙引擎(InnoDB和X-Engine)混合部署方式,使集群整體性能下降控制在20%以內。當業務數據的存儲空間達到一定規模(幾百GB或幾百TB),在集群整體性能可控范圍內,用戶能明顯地享受到降本紅利。
適用場景
PolarDB高壓縮引擎(X-Engine)提供了超大存儲容量,它可以同時作為多個業務歷史數據的匯聚地,以方便對所有歷史數據進行集中存儲和管理,主要適用于如下幾個場景:
將PolarDB高壓縮引擎(X-Engine)作為線下自建數據庫實例的冷數據存儲地,線下自建數據庫包括但不限于MySQL、TiDB、PostgreSQL、SQL Server等關系型數據庫。
將PolarDB高壓縮引擎(X-Engine)作為阿里云RDS MySQL或者PolarDB MySQL版數據庫服務的歸檔存儲地,將訪問較少的歷史數據遷移到PolarDB MySQL版 X-Engine中存儲,釋放在線數據庫的空間以降低成本并提升性能。
直接將PolarDB高壓縮引擎(X-Engine)作為大容量關系數據庫使用,以滿足一些寫入數據量巨大,但讀頻次較低的業務的需求(如系統監控日志等)。
您可以通過阿里云DTS持續實時地將在線庫的數據遷移至PolarDB 高壓縮引擎(X-Engine),或通過阿里云DMS周期性地將在線數據批量導入到PolarDB 高壓縮引擎(X-Engine)。
支持的內核版本
集群版本需為PolarDB MySQL版8.0版本且修訂版本需滿足如下條件:
8.0.1.1.31及以上;
8.0.2.2.12及以上。
節點規格與定價
高壓縮引擎(X-Engine)支持通用規格和獨享規格。更多詳情,請參見企業版計算節點規格。
關于高壓縮引擎(X-Engine)的計費規則,請參見計算節點計費規則。
聯系我們
如果您需要了解更多關于高壓縮引擎(X-Engine)的使用問題,請添加釘釘群進行咨詢,群號:24490017825。