题
假设我有这个RDBM表(实体的属性value_model):
col1: entityID
col2: attributeName
col3: value
我想要使用HBase由于扩展的问题。
我知道的唯一方式访问Hbase表使用的一个主要关键(cursor).你可以得到一个光标的一个具体的关键和迭代的行一个接一个。
问题是,在我的情况下,我希望能够循环的所有3列。例如:
- 对于给定一个entityID我想要得到其所有attriutes和价值观
- 对于给定名称和价值的,我想要所有的entitiIDS ...
因此,一个想法我有的是要建立一个Hbase表即将举行的数据(表的数据,与entityID作为主要指数),以及2"指数"表一项与名称作为一个主要关键,另一个有价值
每个指数表将举行一个列表中的指针(entityIDs)的数据表。
它是一个合理的做法?或是一个'滥用'问题的能概念?
HBase允许获得主要行动 关键和扫描(认为:cursor)在行 范围。(如果你有两个规模和 需要辅助索引,不用担心 -分类:设救援!但是,这是另一个职位。)
你知不知道如何分类:设可以帮助吗?
--Yonatan
解决方案
Secondary index的确将是有用的许多潜在应用公司,而且我相信开发人员实际上是在看着它。结账 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
其他提示
我建议具有两个不同的平表:一个用于查找的属性+给出的数值entityID,以及一个用于查找的entityID给予的属性+值。
表1会是这样的:
entityID1 {
attribute1: value1;
attribute2: value2;
...
}
和表2:
attribute1_value1 {
entityID1;
}
attribute2_value2 {
entityID1;
}