【问题标题】:Schema design simple address book Hbase/CassandraSchema设计简单通讯录Hbase/Cassandra
【发布时间】:2015-03-22 19:39:38
【问题描述】:

我正在尝试为我将用于 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

【问题讨论】:

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


    【解决方案1】:

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

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

    对于这个问题我无法谈论 HBase 解决方案,但在 Cassandra 2.1+ 中,支持 User Defined Types。该链接中的文档提供了一个很好的用户地址实体关系建模示例。

    【讨论】:

    • 感谢您的评论!我根据您的评论编辑了我的帖子。你觉得这样更合适吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 2011-05-29
    • 2017-04-20
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    相关资源
    最近更新 更多