如何设计hbase索引表?

时间:2012-09-14 20:43:57

标签: hbase

我需要在Hbase中设计一个索引表。例如,我的主表是这样的:

Person
row key: uuid --> name and address columns

我需要创建一个索引Person_Name_Index表,该表使用Person键映射名称。我的索引表将如下所示:

Person_Name_Index
row key: name --> person row key

在Person_Name_Index中将多人行键插入行键名的有效方法是什么?我可以将所有人行键设为单个值,但是如果我需要将另一个人行键添加到名称中。我必须阅读所有这些内容然后添加一个新项目。如果我让每个人的行键都在一个单独的列中,我需要确保该名称是唯一的。我不知道如何不使用uuid类型的字符串,这也使我的表大。有什么想法或建议吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

正如肖恩在HBase中所说,建议根据他们所需的访问路径对数据建模。不建议将其视为RDBMS(因为它不是)。在你的情况下你可以,将人员表的密钥作为名称后跟分隔(例如管道)然后是UID - 然后你可以按名称搜索并且每个人都有一个唯一的ID

String personName="Name to Search";
String delimiter="|";
PrefixFilter prefixFilter = new PrefixFilter(Bytes.toBytes(personName+delimiter));
Scan scan = new Scan();
scan.setFilter(prefixFilter);
ResultScanner resultScanner = hBaseTable.getScanner(scan);

然后在扫描仪上迭代以查看名称为

的所有人