【问题标题】:Is it possible to skip 'x' results in Cassandra SELECT statement? | PAGINATION是否可以在 Cassandra SELECT 语句中跳过“x”结果? |分页
【发布时间】:2021-01-03 00:22:31
【问题描述】:

我想为我的应用实现一个简单的分页,它使用最新的 Cassandra。我正在寻找 3 天,但找不到任何有用的东西(在 DS 文档中,也没有使用 Google)。

长话短说 - 在进行 SELECT 语句时是否可以跳过“x”结果?我不想这样做 SELECT 返回所有结果之后,我希望 SELECT 语句返回 仅由 skipsize 定义强> 结果。

在 Cassandra 中可以吗?我看到了这个: https://docs.datastax.com/en/archived/cql/3.1/cql/cql_reference/select_r.html#reference_ds_d35_v2q_xj__paging-through-unordered-results

并阅读了迭代器,但它看起来不像我正在寻找的东西(迭代器似乎迭代了已经从数据库中获取的结果;上面的链接看起来像某种 intable 分页(这是某种解决方法))。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    没有内置的“跳过”功能,只有允许您限制返回的行数的限制。但是 Cassandra 支持所谓的分页状态,它允许您以“最后获取的位置”开始显示结果(请参阅Cassandra's native protocol specification 了解技术细节(第 8 节))。但这将允许您仅实现“前向分页”,对于后向分页,您需要记住您已经停止的位置(只是缓存分页状态,或“记住”完整的主键)

    一些驱动程序(或所有驱动程序,不记得了)正在通过 API 公开该分页状态,因此您可以将其放入 cookie 中,或存储在其他地方(例如,请参阅doc for Java driver)。 Java 驱动程序,也称为 provides OffsetPager class,它模拟分页和随机访问数据,但在底层它只是跳过不必要的结果,因此请注意性能影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 2012-04-24
      • 1970-01-01
      相关资源
      最近更新 更多