2008-12-17 224 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; 
}