HBase 目前不适用于两个或三个列系列以上的任何内容,因此请保持模式中的列族数量较少。目前,冲洗和压缩是基于每个区域进行的,因此如果一个列族携带大量数据带来冲洗,则即使它们携带的数据量很小,相邻的族也将被刷新。当存在许多列族时,冲洗和压缩交互可以产生一堆不必要的 i / o(通过改变刷新和压缩以按列系列工作来解决)。有关压缩的更多信息,请参见压缩。
如果可以在模式中使用,请尝试使用一个列族。在数据访问通常是列作用域的情况下,仅引入第二和第三列族;即您查询一个列族或另一个列族,但通常不是同时查询两个列族。
如果单个表中存在多个 ColumnFamilies,请注意基数(即行数)。如果 ColumnFamilyA 有 100 万行而 ColumnFamilyB 有 10 亿行,则 ColumnFamilyA 的数据可能会分布在许多区域(和 RegionServers)中。这使得 ColumnFamilyA 的大规模扫描效率降低。