我正在使用Cassandra 1.2.3并且可以使用Limit 10执行select查询。
如果我想要10到20的记录,我不能做“限制10,20”。
以下查询给我一个错误。
select * from page_view_counts limit 10,20
如何实现这一目标?
由于 NIKHIL
答案 0 :(得分:11)
你不能在CQL中做这样的跳过。您必须通过指定起始位置来进行分页,例如
select * from page_view_counts where field >= 'x' limit 10;
从x开始接下来的10个元素。
我在这个答案中写了一个完整的例子:Cassandra pagination: How to use get_slice to query a Cassandra 1.2 database from Python using the cql library。
答案 1 :(得分:0)
为此你必须首先规划你的数据模型,以便它可以根据你的要求获得记录...... 你能说出你在做什么样的例子吗? 你在使用hector客户端还是其他任何人?
答案 2 :(得分:0)
对不起伙伴我用hector client& java,但看到你的要求我可以建议像这样规划你的数据模型: 将时间跨度用作yyyyMMddHH格式的行键,该存储列名称为由UTF8Type和TimeUUID组成的复合键(例如C1 + timeUUID)。 注意:这里的第一个复合键是计数器列族列名(例如C1) 现在你只会在你的CF中存储20个有限的记录并使这个c1计数器20,现在如果任何新记录在相同的时间内出现你必须用密钥C2 + timeUUID插入它现在你将计数器列族c2增加到20个记录
现在要获取记录,你只需要传递值C1,C2 ......等,如2013061116所示 它会给你20条记录而不是20条等等......你必须以编程方式实现这一点......希望你能得到这个并帮助你