9

我正在使用 Cassandra 1.2.3,并且可以使用 Limit 10 执行选择查询。

如果我想要从 10 到 20 的记录,我不能做“限制 10,20”。

下面的查询给了我一个错误。

select * from page_view_counts limit 10,20 

如何做到这一点?

谢谢尼基尔

4

3 回答 3

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

于 2013-06-10T14:05:45.833 回答
0

为此,您必须首先计划您的数据模型,以便它可以根据您的要求获取记录...您能说出您在做什么类型的示例吗?并且您使用的是 hector 客户端还是其他客户端?

于 2013-06-11T06:02:36.387 回答
0

抱歉,伙计,我是使用 hector 客户端和 java 完成的,但是看到您的要求,我可以建议您像这样计划您的数据模型:使用时间跨度作为 yyyyMMddHH 格式的行键,在该存储列名中作为由 UTF8Type 和TimeUUID(例如 C1+timeUUID )。注意:这里第一个复合键将是计数器列族列名(例如 C1)现在您将只在您的 CF 中存储有限的记录,例如 20 并使这个 c1 计数器为 20,现在如果在相同的时间跨度内出现任何新记录,您必须插入现在使用键 C2+timeUUID 将计数器列族 c2 增加到 20 条记录

现在要获取记录,您只需使用行键传递值 C1 , C2 ...等,例如 2013061116 它将为您提供 20 条记录而不是另外 20 条等等...您必须以编程方式实现此功能..希望您能得到这个并有所帮助你

于 2013-06-11T09:28:42.477 回答