HBase中為什么要有Column Family
1 回答

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
HBase本身的設計目標是支持稀疏表,而稀疏表通常會有很多列,但是每一行有值的列又比較少。
如果不使用Column Family的概念,那么有兩種設計方案:
1.把所有列的數據放在一個文件中(也就是傳統的按行存儲)。那么當我們想要訪問少數幾個列的數據時,需要遍歷每一行,讀取整個表的數據,這樣子是很低效的。
2.把每個列的數據單獨分開存在一個文件中(按列存儲)。那么當我們想要訪問少數幾個列的數據時,只需要讀取對應的文件,不用讀取整個表的數據,讀取效率很高。然而,由于稀疏表通常會有很多列,這會導致文件數量特別多,這本身會影響文件系統的效率。
而Column Family的提出就是為了在上面兩種方案中做一個折中。HBase中將一個Column Family中的列存在一起,而不同Column Family的數據則分開。
由于在HBase中Column Family的數量通常很小,同時HBase建議把經常一起訪問的比較類似的列放在同一個Column Family中,這樣就可以在訪問少數幾個列時,只讀取盡量少的數據。
- 1 回答
- 0 關注
- 943 瀏覽
添加回答
舉報
0/150
提交
取消