我在cassandra 中设计数据模型时遇到了疑问。
即我已经创建了这个CF
网页关注者{“page-id”:{“user-id”:“time”}}
我想对上面的CF进行2次查询。
1) 获取所有用户ID (使用 phpcassa 的 multiget 功能的数组)谁正在关注特定页面 2)检查特定用户是否关注特定网页 即,具有user-id = 1111的用户正在跟随页面-id = 100或不是。
那么,我如何根据该CF进行查询。
注意:我不想为这种情况创建新的CF.因为这个用户操作(即用户点击页面上的关注按钮),必须在3个CF中插入数据如果我为此创建了另一个CF,则必须将数据插入总共4个CF.这可能会导致性能问题。
如果你在phpcassa中提供示例,那就太棒了...
另一个疑问是: - 我为我的大学社交网络网站创建了cassandra数据模型(即页面关注者,用户关注者,通知,警报等)。
对于每个用户操作,我必须将数据插入2或3个或更多CF,那么它是否导致性能问题???这是一个很好的设计吗?
请帮帮我......
提前致谢
答案 0 :(得分:1)
通常,在Cassandra中进行数据建模时,首先要查看查询,然后构建适合于此的数据模型。
对于你的情况,你可以做以下(我没有phpcassa的经验,所以我只能给你方法,你必须弄清楚phpcassa位)
1)执行切片查询,将start列设置为'',将end列设置为'',并将范围设置为非常大的值。这将返回所有列。
2)只需为rowkey = 100和userid = 1111执行get列。如果该值不为null,则用户将跟随该页面。
Cassandra针对写入进行了高度优化。使用Cassandra建模数据的推荐方法是以非规范化方式编写,甚至写入多个CF.写入2或3个家庭应该不是问题。您始终可以使写入异步以获得更好的性能。
编辑:http://thobbs.github.com/phpcassa/tutorial.html是phpcassa的好地方。