数据库模式设计简单地址簿hbase/cassandra

odopli94  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(339)

我正在尝试为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
drnojrws

drnojrws1#

地址往往变得更复杂,您可以添加附加的、非规范化的列族/表来支持您的查询。
编辑:因为您更关心地址和组的查询,所以应该添加两个新的、非规范化的表:一个按地址id键控,另一个按组id键控。
我不能用hbase解决这个问题,但是在cassandra2.1+中,支持用户定义的类型。该链接中的文档提供了一个很好的建模用户-地址-实体关系的示例。

相关问题