由于X-Engine分層存儲的架構特點,該引擎特別適合某些業務負載特征的業務,本文介紹X-Engine的典型應用業務場景。

X-Engine的分層存儲架構特別適合具有如下業務負載特征的業務:

  • 數據訪問具有鮮明的時間特征。例如大部分讀取及修改操作集中在最近寫入的數據上,而歷史數據較少被訪問。X-Engine通過將最新寫入的數據緩存在內存中并通過高效數據結構進行索引,可以實現極高的性能,而較少訪問的歷史數據則保存在磁盤,提供稍遜的讀寫性能。
  • 庫表數據量特別大。傳統InnoDB引擎遷移到X-Engine后,依據數據特征不同,存儲空間可降低至10%~50%;遷移到X-Engine之后,很多業務可以免除分庫分表的需求,使用單庫即可承載近10 TB的數據存儲服務。

作為中國領先的電子商務服務提供商,用戶體量龐大,阿里內部有非常多的在線業務承受非常大的存儲成本壓力。接下來為您介紹阿里巴巴集團內部使用X-Engine解決業務需求的幾個典型案例。

說明

淘寶和天貓交易訂單信息庫

淘寶和天貓存儲用戶交易數據的數據庫,需要保存用戶所有的歷史交易記錄以供查詢,當前交易記錄數據庫集群現狀如下:

  • 數據條目超過萬億級,磁盤容量達到PB級。
  • 在大促時面臨極大的寫入壓力。

雖然可以通過水平拆庫,實現性能的和存儲能力的水平擴展,但是由于體量巨大,在單實例存儲的數據容量無法提高的前提下,拆庫導致數據庫集群規模過大,會導致運維和管控操作日益復雜,同時整體存儲成本的日益上漲也是一個無法忽視的問題。

在交易數據庫遷移為X-Engine之后,因為X-Engine所采用的緊湊物理頁存儲格式以及高效的壓縮算法,阿里實現了在單庫上存儲及處理20 TB的原始數據集。相對原有采用InnoDB引擎的實例,單實例處理的數據量提升了3倍。

同時因為交易信息庫的訪問特征是:最近產生的交易記錄會更頻繁的被更新和讀取。非常適合X-Engine的冷熱分離架構,最新產生的交易記錄總是保存在內存中并被高效索引,可以保證極高的處理速度和極低的訪問延時。

詳情請參見淘寶萬億級交易訂單背后的存儲引擎

釘釘聊天記錄信息庫

釘釘作為中國領先的企業IM工具,在中國有超過億級別的用戶。不同于傳統的微信等用戶級IM工具。 企業IM需要實現聊天記錄的永久保存,并且提供多端漫游功能。在用戶量持續爆炸性增長的前提下,聊天記錄的永久保存給釘釘業務帶來極大的成本壓力,同時在數據爆炸性增長的前提下保證聊天記錄的讀寫性能不降低也是一個極大的挑戰。

在初期采用InnoDB引擎并面臨存儲的壓力時,釘釘考慮了多種候選方案,例如Hbase等NoSQL服務。但是企業IM對數據一致性有比較苛刻的需求,同時業務類型的多樣化,也對諸如二級索引等數據庫的功能有比較強的依賴。

在采用X-Engine之后,相同原始數據,所需的磁盤空間比使用InnoDB引擎減少了62%。同時繼續保有了對事務以及二級索引等數據庫特性的支持。業務代碼不做任何修改即可以遷移到使用X-Engine引擎的集群上。

詳情請參見X-Engine如何支撐釘釘躍居AppStore第一

阿里圖片空間信息庫

阿里巴巴集團圖片空間是淘寶智能圖片中心面向商家提供的免費圖片存儲管理服務,由于淘寶、天貓主站上累積的用戶圖片數據量非常大,圖片空間業務也面臨非常巨大的存儲空間和寫入性能壓力,尤其每年雙11之前,商家大量更新商品庫存保有單位SKU(Stock keeping Unit),此時數據會急劇增長。

由于圖片空間業務存儲的圖片元信息大部分為文本內容,特別是一些URL屬性,非常適合X-Engine引擎中使用的前綴壓縮算法。再結合X-Engine中的緊湊數據頁和通用壓縮算法。遷移到X-Engine引擎之后的圖片空間業務,所使用的磁盤空間只有使用InnoDB引擎的1/7。這意味著PB級別的空間節省。

在達到空間節省目標的同時,X-Engine引擎所能承載的TPS相對InnoDB沒有降低,且響應時延也完全滿足在線業務的要求。