架构设计简单的地址簿Hbase / Cassandra

时间:2015-03-22 19:39:38

标签: database cassandra hbase database-schema schema-design

我正在尝试为一个简单的地址簿架构建模,我将用于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

1 个答案:

答案 0 :(得分:1)

地址往往变得更复杂,你可以添加额外的,非规范化的列族/表来支持你的查询。

编辑:由于您更关心查询地址和组,因此您应该添加两个新的非规范化表:一个由address_id键入,另一个由group_id键入。

我无法就此问题与HBase解决方案说话,但在Cassandra 2.1+中,支持User Defined Types。该链接的文档有一个很好的用户地址实体关系建模示例。