如何使用Cassandra手动分页导航到上一页

Iva*_*nov 6 javascript cassandra node.js

我正在使用Nodejs Cassandra驱动程序,我希望能够检索上一页和下一页.到目前为止,文档显示了下一页的检索,它将pageState上一页保存并将其作为参数传递.遗憾的是,没有关于如何导航到上一页的信息.

我认为有两种选择:

  • 将每个pageState页面和页面保存为键值对,并使用pageState您要导航到的页面.

  • 将检索到的数据保存在数组中,然后使用该数组导航到上一页.(我不认为这是一个很好的解决方案,因为我必须将大块数据存储在内存中.)

这两种方法对我来说似乎都不是一个优雅的解决方案,但如果我必须选择我会使用第一种方法.

有没有办法使用Nodejs Cassandra驱动程序开箱即用?

另一件事是在文档中,通过调用eachRow函数来使用手动分页.如果我理解正确,它会在数据库中出现红色时立即为您提供每一行.问题是这是在我的API中实现的,我在HTTP响应中返回当前页面的数据.因此,为了让我这样做,我必须将每一行推送到自定义数组,然后在检索当前页面的数据时返回该数组.有没有办法使用execute手动分页,因为上述似乎是多余的?

谢谢


编辑:

这是我的数据模型:

CREATE TABLE store_customer_report (
    store_id uuid,
    segment_id uuid,
    report_time timestamp,
    sharder int,
    customer_email text,
    count int static,
    first_name text,
    last_name text,
    PRIMARY KEY ((store_id, segment_id, report_time, sharder), customer_email)
) WITH CLUSTERING ORDER BY (customer_email ASC)
Run Code Online (Sandbox Code Playgroud)

我在网格中显示数据,以便用户可以通过它进行导航.在我写这篇文章的过程中,我想到了一种不需要先前功能的方法,但我认为这是一个有效的案例,如果有一个优雅的解决方案,它会很棒.

Chr*_*ink 3

有一个选项是“更多”手动,这在分页功能之前很常见。您可以存储您在响应中发回的当前页面的最后一个分区/集群密钥(可能根据其内容进行加密,最有可能生成分区密钥并仅发送/接收集群密钥以避免安全问题)。然后,在执行“下一页”响应时,您只需从那里开始 CQL 查询。要返回页面,请更改ORDER BY聚集键的子句并向后走。如果您提供您的架构,那么举例会更容易。无论如何,这就是 pageState 真正所做的一切。