codecamp

HBase列族数量

HBase列族数量

HBase 目前对于两列族或三列族以上的任何项目都不太合适,因此请将模式中的列族数量保持在较低水平。目前,flushing 和 compactions 是按照每个区域进行的,所以如果一个列族承载大量数据带来的 flushing,即使所携带的数据量很小,也会 flushing 相邻的列族。当许多列族存在时,flushing 和 compactions 相互作用可能会导致一堆不必要的 I/O(要通过更改 flushing 和 compactions 来针对每个列族进行处理)。

如果你可以在你的模式中尝试使用一个列族。在数据访问通常是列作用域的情况下,仅引入第二和第三列族;即你查询一个列族或另一个列族,但通常不是两者同时存在。

ColumnFamilies的基数

在一个表中存在多个 ColumnFamilies 的情况下,请注意基数(即行数)。如果 ColumnFamilyA 拥有100万行并且 ColumnFamilyB 拥有10亿行,则ColumnFamilyA 的数据可能会分布在很多很多地区(以及 Region Server)中。这使得 ColumnFamilyA 的大规模扫描效率较低。

HBase表格模式经验法则
Rowkey(行键)设计
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

HBase快速入门

HBase批量加载

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }