我们正在研究为我们的web服务选择nosql数据库。我们已经尝试过Cassandra,并使用Cassandra列族和超级列族成功地对我们的原始MySQL数据进行了建模。这是一次非常有趣的经历。现在,我们开始研究Riak,并想知道如何使用Riak来建模Cassandra的超级柱族。
例如,我们有一个超级列族来存储用户的所有好友,其中用户的id是key,好友连接时的时间戳是secondary key,以及节点列族中好友的键值对。
uid1 ---- t1 ---- key1 : value11
key2 : value12
t2 ---- key1 : value21
key2 : value22
... ... ...
uid2 ---- tm ---- key1 : valuem1
key2 : valuem2
tn ---- key1 : valuen1
key2 : valuen2
... ... ...
uidx ---- ....
通过以上数据建模,一种用法是我们可以进行范围查询,以获取在给定时间范围内连接的用户(例如uid1)的所有朋友(或给定数量的朋友)。
对于Riak,应该如何对数据进行建模以实现上述使用场景?
在Riak中,您将使用链接。你可以存储用户信息,朋友的用户信息,然后创建一个从一个朋友到另一个朋友的"链接"。如果您愿意,这可以是双向的。
Link: </riak/users/alice>; riaktag="bob"