HBase中多列家族有哪些优势?

时间:2015-01-28 16:29:41

标签: hbase nosql

我想将HBase用作我的应用程序的数据库。我有一个有多列的表。我现在需要决定应该使用多少列系列,一个或多个。如果不止一个,会有什么优缺点。

1 个答案:

答案 0 :(得分:12)

已在official HBase guide中记录,请以粗体显示语句:

  
      
  1. 关于列族数
  2.         

    HBase目前不适用于两个或三个列族以上的任何内容,因此保留数量   架构中的列族低。目前,潮红和   压缩是基于每个区域完成的,因此如果是一个列族   携带大量数据带来冲洗,相邻   虽然他们携带的数据量很大,但家庭也会被冲洗   小。当许多列族冲洗和压实   交互可以使一堆不必要的i / o加载(要成为   通过改变冲洗和压实来处理每列的问题   家庭基础)。有关压缩的更多信息,请参阅压缩。

         

    如果您可以在模式中尝试使用一个列族。只要   在数据的情况下引入第二和第三列族   访问通常是列作用域;即您查询一个列族或   另一方但通常不是同时进行。

         

    33.1。 ColumnFamilies的基数

         

    如果单个表中存在多个ColumnFamilies,请注意基数(即,数量)   行)。如果ColumnFamilyA有100万行而ColumnFamilyB有1   十亿行,ColumnFamilyA的数据可能分布在很多行,   许多地区(和RegionServers)。这使得大规模扫描   ColumnFamilyA效率低下。

一个很好的例子是拥有一个包含每日,每月,每年和每个列系列的分析表,每个系列都有自己的TTL设置(到期)和每个日期范围的列(天,月,年......) ,它们是不同的范围,当您查询表时,通常一次只能获取一种类型的聚合,即:检索过去30天的每日统计数据


如果您想了解有关架构设计的更多信息,请查看Amandeep Khurana的精彩Introduction to HBase schema design