【发布时间】:2012-09-14 20:43:57
【问题描述】:
我需要在 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 类型的字符串,我不知道该怎么做,这也会使我的表变大。有什么想法或建议吗?
谢谢,
【问题讨论】:
-
你可能做错了什么,我不明白 Person_Name_Index 表的目标。为什么要使用人员行键映射名称?在 Hbase 中,您应该对数据进行非规范化。如果您不对数据进行非规范化,那么您基本上会得到与在 RDBMS 上使用的相同的实现。我不知道你的用例,但它可能有一个解决方案,所有这些数据都在同一个表中
-
我想找到所有具有给定名称的用户。我可以扫描我的人员表,但扫描索引表更有效,不是吗?
-
person 表的用例是什么?您可能应该将名称作为 person 表的行键,并将所有地址放在一个列族中
-
名称不保证唯一。我做不到。
-
是的,但最后在 Person_Name_Index 行中添加多个人员行键或在人员行中添加多个人员地址之间有什么区别。我的意思是这是同一件事,但你只有一张桌子
标签: hbase