我想将HBase用作我的应用程序的数据库。我有一个有多列的表。我现在需要决定应该使用多少列系列,一个或多个。如果不止一个,会有什么优缺点。
答案 0 :(得分:12)
已在official HBase guide中记录,请以粗体显示语句:
- 关于列族数
HBase目前不适用于两个或三个列族以上的任何内容,因此保留数量 架构中的列族低。目前,潮红和 压缩是基于每个区域完成的,因此如果是一个列族 携带大量数据带来冲洗,相邻 虽然他们携带的数据量很大,但家庭也会被冲洗 小。当许多列族冲洗和压实 交互可以使一堆不必要的i / o加载(要成为 通过改变冲洗和压实来处理每列的问题 家庭基础)。有关压缩的更多信息,请参阅压缩。
如果您可以在模式中尝试使用一个列族。只要 在数据的情况下引入第二和第三列族 访问通常是列作用域;即您查询一个列族或 另一方但通常不是同时进行。
33.1。 ColumnFamilies的基数
如果单个表中存在多个ColumnFamilies,请注意基数(即,数量) 行)。如果ColumnFamilyA有100万行而ColumnFamilyB有1 十亿行,ColumnFamilyA的数据可能分布在很多行, 许多地区(和RegionServers)。这使得大规模扫描 ColumnFamilyA效率低下。
一个很好的例子是拥有一个包含每日,每月,每年和每个列系列的分析表,每个系列都有自己的TTL设置(到期)和每个日期范围的列(天,月,年......) ,它们是不同的范围,当您查询表时,通常一次只能获取一种类型的聚合,即:检索过去30天的每日统计数据
如果您想了解有关架构设计的更多信息,请查看Amandeep Khurana的精彩Introduction to HBase schema design