Cassandra按计数排序结果

时间:2012-01-14 17:40:16

标签: sorting cassandra datamodel

我正在搜索搜索各种关键字的用户的数据。我想要生成的是一份关于用户搜索过的所有唯一关键字的报告,按升序和降序排序,按每次搜索的次数排序。

这是否可以使用Cassandra建模,如果是这样,模型会是什么样子?

谢谢!

2 个答案:

答案 0 :(得分:4)

根据eBay tech blog,将计数器值存储在密钥本身中并不罕见。因此,为了存储次数,Bob,Ken和Jimmy登录到一个网站,单行看起来如下:

logins: [(0001_Bob,''), (0002_Bob, ''), ..., (0010_Ken, ''), (0012_Jimmy, ''), ...]

请注意,您的密钥会自动按尾部的最高计数自行排序,这接近于一个恒定的时间查找。

请注意,每次用户登录时,都会创建一个新的列键。您必须跟踪另一行中的登录次数,以便快速查找到目前为止已发生的登录次数以及下一个键应具有的整数值:

login_count: [(Bob, 2), (Ken, 10), (Jimmy, 10), ...]

答案 1 :(得分:0)

您可以将每个关键字用作行键,并使用每行的计数器列来跟踪搜索次数。然后,您可以通过扫描每一行并读取计数器来生成报告。 Cassandra不会对结果进行排序(假设您使用默认的RandomPartitioner而不是OrderPreservingPartitioner),但考虑到可能只有几万个关键字,您可以轻松地在客户端对它们进行排序。