如何在cassandra中构建朋友关系

时间:2013-08-19 11:45:04

标签: cassandra cassandra-0.7

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

我想创建一个朋友关系表,但我不确定最好的方法是什么。 首先,我认为把关键作为当前用户和列作为朋友,但我想实现发送朋友请求的功能,所以我认为应该有另一个被称为接受的对象,负责两个人是否是真正的朋友或收集其他人接受了朋友的请求。 我认为这将是多对多的表。例如,在友谊关系中。

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

感谢任何指示。

1 个答案:

答案 0 :(得分:0)

这似乎可以通过创建一个新表“friends”来实现,你可以(例如)在CQL中使用“复合键”{userid,friendid}:

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

这将定义两个用户之间的“友谊”关系(两者都带有Users表中的条目)...这将允许您查询几件事:

  • 获取“userid”的所有朋友
  • 检查用户ID和“用户x”(具有给定的friendid)是否存在

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