我正在尝试为hbase/cassandra使用的简单地址簿模式建模。
场景:
用户可以创建他的联系人。
联系人可能有许多电话、地址或电子邮件。
用户可以创建组来组织他的联系人(一个组可以包含多个联系人,一个联系人可以放在多个组中)。
我计划做的唯一select查询是获取所有住在地址x并且在组y中的联系人。
以下模式是否适用于此?
|Table name: User |
-----------------------
Key: user_id
email
password
-----------------------
Column family: Contacts
Key: contact_id
firstname
lastname
---------------
Column family: Address
Key: address_id
street
housenumber
zipcode
---------------
Column family: Group
groupname
或者这更好/可能吗?
|Table name: User |
-----------------------
Key: user_id
email
password
-----------------------
Column family: Contacts
Key: contact_id
firstname
lastname
contact_id
|Table name: Address |
-----------------------
Key: address_id
street
housenumber
zipcode
contact_id
|Table name: Group |
-----------------------
Key: group_id
group_name
1条答案
按热度按时间drnojrws1#
地址往往变得更复杂,您可以添加附加的、非规范化的列族/表来支持您的查询。
编辑:因为您更关心地址和组的查询,所以应该添加两个新的、非规范化的表:一个按地址id键控,另一个按组id键控。
我不能用hbase解决这个问题,但是在cassandra2.1+中,支持用户定义的类型。该链接中的文档提供了一个很好的建模用户-地址-实体关系的示例。