0

我需要在 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 类型的字符串,我不知道该怎么做,这也会使我的表变大。有什么想法或建议吗?

谢谢,

4

1 回答 1

0

正如 Sean 在 HBase 中所说,建议根据您需要的访问路径对数据进行建模。不建议将其视为 RDBMS(因为它不是)。在您的情况下,您可以将 person 表的键作为名称,后跟一个分隔符(例如管道),然后是 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);

然后在扫描仪上迭代以查看所有具有该名称的人

于 2012-09-15T12:16:35.757 回答