如何在卡桑德拉构建朋友关系



我目前在Cassandra中有一个用户表。

我想创建一个朋友关系表,但我不确定什么是最好的方法。首先我想把like-key作为当前用户,把column作为好友,但后来我想实现发送好友请求的功能,所以我认为应该有另一个名为accepted的对象,它可以考虑两个人是否是真正的朋友,或者另一个人是否接受了好友请求。我想这将是多对多的桌子。例如,在友谊关系中。

Friendship: {
John Dow: {
10: Mark Seldon,
8: Julian Hendrix,
...
},
Mark Seldon: {
9: John Dow,
...
},
...
}

欢迎任何指示。

这似乎可以通过创建一个新表"friends"来实现,例如,在CQL:中可以使用"复合密钥"{userid,friendid}

CREATE TABLE friends(    
userid varchar,
friendid varchar,
PRIMARY KEY (userid, friendid)
);

它将定义两个用户之间的"友谊"关系(两者都在users表中有一个条目)。。。这将允许您查询以下内容:

  • 获取"userid"的所有好友
  • 检查userid和"userx"(带有给定的friendid)是否存在

这也意味着,无论何时存储关系,都需要在表中创建两个"条目":{user1,user2}和{user2,user1}。。。

最新更新