在Doris中,分桶(Bucketing)是為了更好地管理和查詢數據,將數據分成多個小的邏輯單元。分桶可以通過手動或自動的方式進行配置,每種方式各有其特點和適用場景。
Doris 支持兩層的數據劃分。第一層是分區(Partition),支持 Range 和 List 的劃分方式。第二層是Bucket(Tablet),支持 Hash 和 Random 的劃分方式。建表時如果不建立分區,此時 Doris會生成一個默認的分區,對用戶是透明的。使用默認分區時,只支持 Bucket 劃分。
在 Doris 的存儲引擎中,用戶數據被水平劃分為若干個數據分片(Tablet,也稱作數據分桶)。每個 Tablet 包含若干數據行。各個Tablet 之間的數據沒有交集,并且在物理上是獨立存儲的。
多個 Tablet 在邏輯上歸屬于不同的分區(Partition)。一個 Tablet 只屬于一個分區。而一個分區包含若干Tablet。因為 Tablet 在物理上是獨立存儲的,所以可以視為分區在物理上也是獨立。Tablet是數據移動、復制等操作的最小物理存儲單元。
若干個分區組成一個 Table。分區可以視為是邏輯上最小的管理單元。
一個分桶在物理層面就是一個 Tablet
采用兩層數據劃分的好處:
- 有時間維度或類似帶有有序值的維度,可以以這類維度列作為分區列。分區粒度可以根據導入頻次、分區數據量等進行評估。<