0

在 cassandra 中设计数据模型时遇到了疑问。

即我创建了这个 CF

Page-Followers{ "page-id" : { "user-id" : "time" } }

我想对上述 CF 进行 2 个查询。

1)获取所有关注特定页面的用户 ID(作为使用phpcassa的multiget函数的数组)。
2)检查特定用户是否正在关注特定页面。
ie user-id = 1111 的用户是否关注页面 page-id=100。


那么,我如何根据该 CF 进行这些查询。

注意: 我不想为这种情况创建一个新的 CF。因为对于这个用户操作(即用户点击页面上的关注按钮),必须在 3 个 CF 中插入数据,如果我为此创建了另一个 CF,那么必须将数据插入总共 4 个 CF。它可能会导致性能问题。

如果你在 phpcassa 中举个例子,那就太好了......


另一个疑问是:-
因为我已经为我的大学社交网站创建了 cassandra 数据模型(即页面关注者、用户关注者、通知、警报,...... ETC)。
对于每个用户操作,我必须将数据插入 2 个或 3 个或更多 CF,所以这会导致性能问题吗???是好设计吗??

请帮助我...

在此先感谢

4

1 回答 1

1

一般来说,在 Cassandra 中进行数据建模时,您首先查看您的查询,然后构建一个适合该查询的数据模型。

对于您的情况,您可以执行以下操作(我对 phpcassa 没有经验,所以我只能给您方法,您必须弄清楚 phpcassa 位)

1) 以起始列为 '' 和结束列为 '' 进行切片查询,并将范围设置为一个非常大的值。这将返回所有列。

2)只需为rowkey = 100和userid = 1111做一个get列。如果值不为null,则用户关注页面。

Cassandra 针对写入进行了高度优化。使用 Cassandra 对数据进行建模的推荐方法是以非规范化方式写入,甚至写入多个 CF。写信给 2 或 3 个家庭应该不是问题。您始终可以使写入异步以实现更好的性能。

编辑:http : //thobbs.github.com/phpcassa/tutorial.html 是 phpcassa 的好地方。

于 2012-07-11T17:53:53.337 回答