【发布时间】:2013-06-06 04:53:27
【问题描述】:
我使用的是 Cassandra 1.2.3,可以使用 Limit 10 执行选择查询。
如果我想要从 10 到 20 的记录,我不能执行“限制 10,20”。
下面的查询给了我一个错误。
select * from page_view_counts limit 10,20
如何做到这一点?
谢谢 尼基尔
【问题讨论】:
标签: cassandra
我使用的是 Cassandra 1.2.3,可以使用 Limit 10 执行选择查询。
如果我想要从 10 到 20 的记录,我不能执行“限制 10,20”。
下面的查询给了我一个错误。
select * from page_view_counts limit 10,20
如何做到这一点?
谢谢 尼基尔
【问题讨论】:
标签: cassandra
您不能在 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。
【讨论】:
为此,您必须首先规划您的数据模型,以便它可以根据您的要求获取记录... 你能说出你在做什么类型的例子吗? 并且您使用的是 hector 客户端还是任何其他客户端?
【讨论】:
对不起,伙计,我是使用 hector 客户端和 java 完成的,但是看到您的要求,我可以建议您像这样计划您的数据模型: 使用时间跨度作为 yyyyMMddHH 格式的行键,将列名存储为由 UTF8Type 和 TimeUUID 组成的复合键(例如 C1+timeUUID )。 注意:这里的第一个复合键是计数器列族列名(例如 C1) 现在您将只在您的 CF 中存储有限的记录,例如 20,并使此 c1 计数器为 20,现在如果在相同的时间跨度内出现任何新记录,您必须使用键 C2+timeUUID 插入该记录,现在您将计数器列族 c2 增加到 20 条记录
现在要获取记录,您只需传递值 C1 , C2 ...etc 与 rowkey 像 2013061116 它会给你 20 条记录,而不是另外 20 条,依此类推......你必须以编程方式实现它......希望你得到这个并帮助你
【讨论】: