1
我正在Java中使用Cassandra一段時間,發現我們可以限制結果集的大小,並通過從應用程序端存儲分頁狀態,我們可以在同一語句中重用該頁面狀態以從最後一條記錄中獲取數據的迴應。例如,Cassandra中是否存在PagingState的超時期限?
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的官方文檔,仍然找不到任何。
感謝您的回覆。所以,如果會話沒有關閉,分頁狀態信息將永遠保留在數據庫中? – AV94
所有的狀態都在PagingState數據本身中。 Cassandra沒有爲分頁保留任何狀態,所以Session可以關閉,PagingState仍然可以使用。這就是爲什麼它可以永久重複使用(使用相同的協議版本),以及爲什麼當您查詢以前從未看過該查詢的C *節點時,它仍然能夠知道從哪裏尋呼。 I.E.如果您查詢節點A並返回一個分頁狀態,那麼如果您使用該分頁狀態將查詢發送到節點B,它仍然可以工作,因爲所有狀態都包含在分頁狀態中。 –