在Cassandra中存储用户关系的正确数据模型是什么(即Bob跟随John)

时间:2013-08-31 03:52:39

标签: cassandra cql cql3

我有一个系统,需要将用户的操作发送给订阅这些更新的其他用户。目前没有很多用户/订阅者,但它可能会迅速增长,所以我想确保我做对了。这只是这么简单吗?

create table subscriptions (person_uuid uuid,
    subscribes_person_uuid uuid,
    primary key (person_uuid, subscribes_person_uuid)
)

我需要能够向两个方向查找事物,即回答问题:

  • Bob的订阅者是谁。
  • Bob订阅了谁

任何想法,反馈和建议都会有用。

2 个答案:

答案 0 :(得分:1)

这两个查询代表模型的开头:

  1. 您希望用户成为PK或PK的一部分。

  2. 取决于您可以使用的订阅/订阅者的基数:

    1. 表示较低的数字:使用单个表格和两个set s
    2. 表示高数字:使用2个类似于您描述的表格

答案 1 :(得分:0)

@Jacob

您的用例与Twitter示例非常相似,我确实对其进行了模型化here

如果你想跟踪关系的两面,我需要有一个专门的表来索引它们。

最后但并非最不重要的是,根据用户是否可变的事实,您可以决定非规范化(例如复制用户内容)或仅存储用户ID,然后在分离的表中获取用户内容。

我在Achilles中实现了简单的连接功能。看看你是否想要这样做