我正在尝试为一个简单的地址簿架构建模,我将用于HBase / Cassandra。
情景:
我打算做的唯一选择查询是抓住所有居住在地址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
答案 0 :(得分:1)
地址往往变得更复杂,你可以添加额外的,非规范化的列族/表来支持你的查询。
编辑:由于您更关心查询地址和组,因此您应该添加两个新的非规范化表:一个由address_id键入,另一个由group_id键入。
我无法就此问题与HBase解决方案说话,但在Cassandra 2.1+中,支持User Defined Types。该链接的文档有一个很好的用户地址实体关系建模示例。