列式儲存通過支援列式儲存資料,提供高效能的資料分析和查詢。 作為雲原生資料倉儲,ByteHouse還採用列式儲存設計,保證讀寫效能,支援交易一致性,並應用於大規模資料計算,為使用者提供極快的分析體驗和海量資料處理能力,提公升企業數位化轉型能力。
列式儲存簡介
分析資料庫中的列式儲存是資料庫的物理儲存結構,它基於列而不是行來儲存資料。 列式儲存的主要優點是它能夠提高資料分析和查詢的效能,尤其是在處理大型資料集時。
以下是列式儲存的一些主要功能:
資料壓縮:由於同一列中的資料往往具有相似或相同的資料模式(例如,日期、時間、位址等),因此列式儲存可以更有效地進行資料壓縮,從而節省儲存空間。
資料過濾效能:列式儲存使僅讀取查詢所需的列非常高效。 在執行大量涉及多列的複雜查詢時,可以顯著減少磁碟IO操作,從而提高查詢效能。
計算位置:由於資料以列形式儲存,因此在執行某些計算(如數學算術或統計函式)時,資料可以直接在記憶體中本地操作,而無需頻繁訪問磁碟,從而提高了計算效率。
資料獨立性:列式儲存允許獨立更新表中的列,這使得增量更新和資料維護更加簡單和高效。
資料分片和分布式處理:由於列式儲存的性質,它非常適合分布式計算環境。 資料可以按列分片,並分發到不同的計算節點進行並行處理,從而實現對大規模資料的分布式處理和分析。
靈活的資料模型:列式儲存通常支援多種資料模型,如行、列、鍵值儲存等,可以適應不同的資料處理需求。
Bytehouse 的柱式儲存設計
ByteHouse是雲原生資料倉儲,為使用者提供超快的分析體驗,支援海量資料的實時資料分析和離線分析,便捷的彈性伸縮能力,極致的分析效能,豐富的企業級功能,幫助客戶實現數位化轉型。
通常,事務資料庫使用行儲存來支援事務和高併發讀寫,而分析資料庫使用列儲存來減少 IO 並促進壓縮。 Bytehouse 使用列儲存來保證讀寫效能,支援事務一致性,適用於大規模資料計算。
data layout
表資料根據分割槽鍵在物理上分為多個部分,並儲存在統一雲儲存的邏輯儲存路徑中,每個部分的大小受資料量和行數的限制。
part delta
部分資料初始構建後,是以行列混合形式儲存的部件資料檔案,並且部分中有增量資料,構造了DML資料字典、位圖索引等,這部分資料可以通過以下兩種方式儲存:
1.每個構建都會重寫零件資料。
2.生成增量資料,並將背景非同步合併到乙個大型部分檔案中。
方案 1 可能會影響整個群集的可用性
1.每次構建 DML 資料字典時,都可能涉及對整個表部件的完整 I/O 操作,這成本很高。
2.構建 DML 等操作需要很長時間才能完成,對使用者不友好,所以我們使用解決方案 2。
零件檔案內容
partdata 分為兩部分:
首先,整個部分包含元資訊,例如資料檔案中行模式列資料的偏移量,由計算節點持久儲存和快取。
二是實際資料資訊,包括實際的列箱資料、列mrk資料、地圖鍵箱地圖鍵索引資料、字典資料、位圖索引資料等,資料根據元資訊中的偏移資訊儲存在零件的資料檔案中。
compaction
Bytehouse 支援將乙個零件檔案拆分為多個小檔案,通過配置零件的最大尺寸和行數,需要滿足該零件的最大尺寸和最大行數。
bytehouse 中的壓縮是全域性完成的,這與之前引發的全域性塊 ID 一致。
除了列式儲存能力外,Bytehouse還優化了元資料管理、自研表引擎等技術,為使用者提供更極致的分析體驗。