在 cassandra 中处理分页结果

Posted

技术标签:

【中文标题】在 cassandra 中处理分页结果【英文标题】:Handling Paged results in cassandra 【发布时间】:2017-10-18 08:51:14 【问题描述】:

我正在查看 this 。但无法弄清楚它是如何工作的。我的期望是当我会做session_execute 它会给我10fetch_size=10

query = "SELECT * FROM users where region_code=1"
statement = SimpleStatement(query, fetch_size=10)
for user_row in session.execute(statement):
    print(user_row)
    print('*'*100)

它只给我单行。我在这里缺少什么。我想让它成为paginated api

【问题讨论】:

【参考方案1】:

如果您使用SELECT * FROM users where region_code=1 LIMIT 10,它将获取 10 条记录。如果你使用SELECT * FROM users where region_code=1 获取大小为 10,它将通过一次抓取 10 的所有匹配行进行分页。在您的 for 循环消耗 10 行后,它将进行另一个阻塞查询以自动获取下一个 10。

【讨论】:

知道了,我的 results.current_rows 给了我 10 行 (fetch_size)。我也在使用paging_state 来获取下一组。但是我怀疑如果用户从页面 1 跳转到 5 那么这不是正确的方法吗? 另外,如果用户想将第 4 页回溯到第 3 页,这里也行不通吧?

以上是关于在 cassandra 中处理分页结果的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra 中的手动压缩

在 Cassandra 数据库中编写存储过程

Cassandra分页和令牌功能;选择分区键

一些Cassandra+YCSB异常

如何在 cassandra 中为 API 实现分页?

EMR LinkageError 上的 Spark + Cassandra