HBase 列族數量

HBase 目前對於兩列族或三列族以上的任何項目都不太合適,因此請將模式中的列族數量保持在較低水平。目前,flushing 和 compactions 是按照每個區域進行的,所以如果一個列族承載大量數據帶來的 flushing,即使所攜帶的數據量很小,也會 flushing 相鄰的列族。當許多列族存在時,flushing 和 compactions 相互作用可能會導致一堆不必要的 I/O(要通過更改 flushing 和 compactions 來針對每個列族進行處理)。

如果你可以在你的模式中嘗試使用一個列族。在數據訪問通常是列作用域的情況下,僅引入第二和第三列族;即你查詢一個列族或另一個列族,但通常不是兩者同時存在。

ColumnFamilies的基數

在一個表中存在多個 ColumnFamilies 的情況下,請注意基數(即行數)。如果 ColumnFamilyA 擁有100萬行並且 ColumnFamilyB 擁有10億行,則ColumnFamilyA 的數據可能會分佈在很多很多地區(以及 Region Server)中。這使得 ColumnFamilyA 的大規模掃描效率較低。


分享到:


相關文章: