假设我有这个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;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top