2012-01-14 78 views
4

我正在记录用户搜索各种关键字的数据。我想要生成的是用户搜索的所有唯一关键字的报告,按每次搜索的次数升序和降序排列。Cassandra按计数排序结果

这是可以使用卡桑德拉建模的东西,如果是的话,模型会是什么样子?

谢谢!

回答

0

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

2

根据eBay tech blog,将计数器值存储在密钥本身中并不罕见。所以存储的次数,鲍勃,肯和吉米登录到网站,单行将如下所示:

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

请注意,您的钥匙将自动在最高计数排序本身尾端,这接近于恒定的时间查找。

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

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