如何查询此Cassandra数据模型设计

时间:2012-07-10 10:02:08

标签: cassandra phpcassa datamodel

我在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,那么它是否导致性能问题???这是一个很好的设计吗?
请帮帮我......
提前致谢

1 个答案:

答案 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的好地方。