cassandra c# 驱动程序中的向后分页

Backward paging in cassandra c# driver

我们正在尝试使用cassandra 来存储数据库。我们无法在 c# datastax 驱动程序中分页 backward/forward。谁能建议一种在 MVC 项目中对结果进行分页的方法。

您可以使用 C# 驱动程序的 manual paging feature 对来自 Cassandra 的结果进行分页。基本上它是这样工作的:

  1. 在查询第一页之前,在您要获取第一页的语句中调用 SetAutoPage(false)SetPageSize(pageSize)
  2. Select 第一页来自 Cassandra 的结果。从查询返回的 RowSet 将具有 PagingState 属性。将该分页状态保存在某处(例如,在会话存储或 Cookie 中)
  3. 稍后,当您想要获取下一页时,从您存储它的位置检索 PagingState
  4. 在查询下一页之前,在语句中调用 SetAutoPage(false)SetPagingState(yourPagingStateFromStorage) 以获取下一页。
  5. 对后续页面重复步骤 2-4。

棘手的部分是 向后 分页。如果您将分页结果缓存在 UI 中(即,每次单击按钮转到 next/previous 页面时都不会刷新整个页面),这不是问题,因为向后分页实际上只是向后移动您已经查询并缓存的数据(可能在您的 JavaScript 代码中的数组中)。

如果您在每次有人点击以翻阅结果时都进行整页刷新,那么您需要保留所有页面的 PagingState,直到您确定它们已完成分页(即将多个分页状态值存储在 Session 或 cookie 之类的东西中)。这样,如果有人向后翻页,您只需查找前一页的分页状态标记并在您的查询中使用它。

注意:如果您处于整页刷新情况,您也可以将分页状态作为查询字符串参数传递。例如,使 link 到下一页“/some/page?pagingState=PAGING_STATE_FROM_ROWSET_CURRENTLY_DISPLAYED”,然后向后分页与浏览器的后退按钮做同样的事情。