由於X-Engine階層式存放區的架構特點,該引擎特別適合某些業務負載特徵的業務,本文介紹X-Engine的典型應用業務情境。
X-Engine的階層式存放區架構特別適合具有如下業務負載特徵的業務:
- 資料訪問具有鮮明的時間特徵。例如大部分讀取及修改操作集中在最近寫入的資料上,而歷史資料較少被訪問。X-Engine通過將最新寫入的資料緩衝在記憶體中並通過高效資料結構進行索引,可以實現極高的效能,而較少訪問的歷史資料則儲存在磁碟,提供稍遜的讀寫效能。
- 庫表資料量特別大。傳統InnoDB引擎遷移到X-Engine後,依據資料特徵不同,儲存空間可降低至10%~50%;遷移到X-Engine之後,很多業務可以免除分庫分表的需求,使用單庫即可承載近10 TB的資料存放區服務。
作為中國領先的電子商務服務提供者,使用者體量龐大,阿里內部有非常多的線上業務承受非常大的儲存成本壓力。接下來為您介紹阿里巴巴集團內部使用X-Engine解決業務需求的幾個典型案例。
- 關於X-Engine的介紹請參見X-Engine引擎使用須知。
- 如何將DRDS原本的InnoDB引擎轉換為X-Engine引擎請參見將PolarDB-XDRDS中的InnoDB引擎轉換為X-Engine引擎。
淘寶和天貓交易訂單資訊庫
淘寶和天貓儲存使用者交易資料的資料庫,需要儲存使用者所有的歷史交易記錄以供查詢,當前交易記錄資料庫叢集現狀如下:
- 資料條目超過萬億級,磁碟容量達到PB級。
- 在大促時面臨極大的寫入壓力。
雖然可以通過水平拆庫,實現效能的和儲存能力的水平擴充,但是由於體量巨大,在儲存單一版本的資料容量無法提高的前提下,拆庫導致資料庫叢集規模過大,會導致營運和管控操作日益複雜,同時整體儲存成本的日益上漲也是一個無法忽視的問題。
在交易資料庫遷移為X-Engine之後,因為X-Engine所採用的緊湊物理頁儲存格式以及高效的壓縮演算法,阿里實現了在單庫上儲存及處理20 TB的未經處理資料集。相對原有採用InnoDB引擎的執行個體,單一實例處理的資料量提升了3倍。
同時因為交易資訊庫的訪問特徵是:最近產生的交易記錄會更頻繁的被更新和讀取。非常適合X-Engine的冷熱分離架構,最新產生的交易記錄總是儲存在記憶體中並被高效索引,可以保證極高的處理速度和極低的訪問延時。
詳情請參見淘寶萬億級交易訂單背後的儲存引擎。
DingTalk聊天記錄資訊庫
DingTalk作為中國領先的企業IM工具,在中國有超過億層級的使用者。不同於傳統的微信等使用者級IM工具。 企業IM需要實現聊天記錄的永久儲存,並且提供多端漫遊功能。在使用者量持續爆炸性增長的前提下,聊天記錄的永久儲存給DingTalk業務帶來極大的成本壓力,同時在資料爆炸性增長的前提下保證聊天記錄的讀寫效能不降低也是一個極大的挑戰。
在初期採用InnoDB引擎並面臨儲存的壓力時,DingTalk考慮了多種候選方案,例如Hbase等NoSQL服務。但是企業IM對資料一致性有比較苛刻的需求,同時業務類型的多樣化,也對諸如二級索引等資料庫的功能有比較強的依賴。
在採用X-Engine之後,相同未經處理資料,所需的磁碟空間比使用InnoDB引擎減少了62%。同時繼續保有了對事務以及二級索引等資料庫特性的支援。業務代碼不做任何修改即可以遷移到使用X-Engine引擎的叢集上。
阿里圖片空間資訊庫
阿里巴巴集團圖片空間是淘寶智能圖片中心面向商家提供的免費圖片儲存管理服務,由於淘寶、天貓主站上累積的使用者圖片資料量非常大,圖片空間業務也面臨非常巨大的儲存空間和寫入效能壓力,尤其每年雙11之前,商家大量更新商品庫存保有單位SKU(Stock keeping Unit),此時資料會急劇增長。
由於圖片空間業務儲存的圖片元資訊大部分為常值內容,特別是一些URL屬性,非常適合X-Engine引擎中使用的首碼壓縮演算法。再結合X-Engine中的緊湊資料頁和通用壓縮演算法。遷移到X-Engine引擎之後的圖片空間業務,所使用的磁碟空間只有使用InnoDB引擎的1/7。這意味著PB層級的空間節省。
在達到空間節省目標的同時,X-Engine引擎所能承載的TPS相對InnoDB沒有降低,且響應時延也完全滿足線上業務的要求。