gpt4 book ai didi

java - Cassandra中的PagingState是否有超时时间?

转载 作者:行者123 更新时间:2023-11-29 08:40:12 25 4
gpt4 key购买 nike

我在 Java 中使用 Cassandra 工作了一段时间,发现我们可以限制结果集的大小,并且通过从应用程序端存储分页状态,我们可以在同一条语句中重用该页面状态以从上次获取数据之前回复的记录。例如,

ResultSet resultSet = session.execute("your query");
PagingState pagingState = resultSet.getExecutionInfo().getPagingState();

我们可以使用这个 pagingState 变量来获取下一批记录(基于设置的获取大小),如下所示。

Statement st = new SimpleStatement("your query");
st.setPagingState(pagingState);
ResultSet rs = session.execute(st);

这意味着 Cassandra 以分页​​状态存储指向其索引数据的链接。我想了解在页面状态保留在 cassandra 数据库内之前是否存在任何超时期限,或者它使链接(分页状态)保持 Activity 状态直到 session 关闭。我翻遍了 Cassandra 的官方文档,还是没找到。

最佳答案

幸运的是,没有与分页状态相关的超时,但有一个小警告。由于版本之间可能会发生变化,因此无需过多详细说明,内部分页状态包含查询文本的 MD5、页面大小、使用的协议(protocol)版本以及对表示最后读取的行的集群键的引用(如果查询跨越分区,还有分区键)。

但是,如 java driver manual for paging 中所述,不能保证分页状态将跨协议(protocol)版本工作。 :

Due to internal implementation details, PagingState instances are not portable across native protocol versions. This could become a problem in the following scenario:

  • you’re using the driver 2.0.x and Cassandra 2.0.x, and therefore native protocol v2;
  • a user bookmarks a link to your web service that contains a serialized paging state;
  • you upgrade your server stack to use the driver 2.1.x and Cassandra 2.1.x, so you’re now using protocol v3;
  • the user tries to reload their bookmark, but the paging state was serialized with protocol v2, so trying to reuse it will fail.

关于java - Cassandra中的PagingState是否有超时时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40850944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com