介紹
在 Apache Doris 中,“分區”和“分桶”是兩種用于管理和優化數據的技術,分別解決不同的數據存儲和查詢優化問題。
在 Doris 中,數據都以表(Table)的形式進行邏輯上的描述。
Row & Column
一張表包括行(Row)和列(Column):
Row:即用戶的一行數據;
Column:用于描述一行數據中不同的字段;
Column 可以分為兩大類:Key 和 Value。從業務角度看,Key 和 Value 可以分別對應維度列和指標列。Doris 的 key 列是建表語句中指定的列,建表語句中的關鍵字’unique key’或’aggregate key’或’duplicate key’后面的列就是 key 列,除了 key 列剩下的就是 value 列。從聚合模型的角度來說,Key 列相同的行,會聚合成一行。其中 Value 列的聚合方式由用戶在建表時指定。關于更多聚合模型的介紹,可以參閱 Doris 數據模型。
分區和分桶
Doris 支持兩層的數據劃分。第一層是分區(Partition),支持 Range 和 List 的劃分方式。第二層是 Bucket(Tablet),支持 Hash 和 Random 的劃分方式。建表時如果不建立分區,此時 Doris 會生成一個默認的分區,對用戶是透明的。使用默認分區時,只支持 Bucket 劃分。
在 Doris 的存儲引擎中,用戶數據被水平劃分為若干個數據分片(Tablet,也稱作數據分桶