2008-12-17 128 views
11

假设我有此RDBM表(Entity-attribute-value_model):如何设计Hbase架构?

col1: entityID 
col2: attributeName 
col3: value 

,我想使用HBase的因结垢的问题。

我知道访问Hbase表的唯一方法是使用主键(游标)。您可以为特定键获取游标,并逐一迭代行。

问题是,在我的情况下,我想能够迭代所有3列。 例如:

  • 对于一个给定的ENTITYID我想所有的attriutes和值
  • 对于给定的attributeName和价值我想所有的entitiIDS ...

所以我的一个想法是构建一个将保存数据(表DATA,其中entityID作为主索引)的Hbase表和一个以attributeName作为主键的“索引”表,另一个表的值为

每个索引选项卡le将保存DATA表的指针列表(entityID)。

这是一个合理的方法吗?或者是对Hbase概念的“滥用”?

在这种blogauthor说:

HBase的允许获得由初级 键和扫描(认为:光标)操作上排 范围。 (如果您有规模和 需要二级指标的,不用担心 - Lucene来救援但是,这是另一篇文章!)

你知道的Lucene如何帮助?

- Yonatan

回答

0

我推荐两个不同的平面表:一个用于查找给定entityID的属性+值,另一个用于查找给定属性+值的entityID。

表1是这样的:

entityID1 { 
    attribute1: value1; 
    attribute2: value2; 
    ... 
} 

和表2:

attribute1_value1 { 
    entityID1; 
} 
attribute2_value2 { 
    entityID1; 
}