假设我有这个RDBM表(Entity-attribute-value_model):
col1: entityID col2: attributeName col3: value
我想使用HBase由于扩展问题.
我知道访问Hbase表的唯一方法是使用主键(游标).您可以获取特定键的游标,并逐个迭代行.
问题是,在我的情况下,我希望能够迭代所有3列.例如 :
对于给定的entityID,我想获得它的所有属性和值
for give attributeName和value我想要所有的entitiIDS ...
所以我有一个想法是构建一个Hbase表来保存数据(表DATA,其中entityID作为主索引),以及2个"索引"表,其中一个以attributeName作为主键,另一个表示值
每个索引表将保存DATA表的指针列表(entityID).
这是一种合理的方法吗?或者是对Hbase概念的"滥用"?
在这篇博客中,作者说:
HBase允许通过主键获取操作并在行范围内扫描(思考:游标).(如果你有二级指标的规模和需求,不要担心 - Lucene拯救!但这是另一篇文章.)
你知道Lucene怎么帮忙吗?
- Yonatan
二级索引确实对HBase的许多潜在应用程序有用,我相信开发人员实际上正在研究它.查看http://www.mail-archive.com/hbase-dev@hadoop.apache.org/msg04801.html.
同时,如果您的应用程序数据存储可以建模为星型模式(请参阅http://en.wikipedia.org/wiki/Star_schema),您可能想要查看Hypertable为二级索引类型需求提出的解决方案http://markmail.org/message/rphm4q6cbar2ycgp