Cassandra:如何使用RangeSlicesQuery从第n行键中返回分页?

时间:2012-01-10 08:19:17

标签: pagination cassandra

如何使用RangeSlicesQuery从第n行键重新分页?

数据基于RandomPartitioner,而setRange函数的反向选项似乎仅适用于不在行上的列。 (http://tinyurl.com/73tncn3)

示例:

row_key1

row_key2

row_key3

row_key4

row_key5

row_key6

  • 设置endkey = row_key4,reverse = true& row count = 2给出以下输出。

预期:

row_key3

row_key4

收到:

row_key1

row_key2

  • 设置startkey = row_key4,reverse = true&行计数= 2给出了 以下输出。

收到

row_key4

row_key5

1 个答案:

答案 0 :(得分:1)

使用RandomPartitioner时,Cassandra存储行的有效顺序是随机的。因此,您无法以您期望的方式进行范围切片。

您应该做的是连续实现您的视图,并为行键使用某种计算的存储桶。例如,行键可以是实际行键/ 10,然后该行可以包含10个实际行:

0 -> {row_key1 : v1, row_key2: v2, ...}
1 -> {row_key10: v10, row_key11: v11, ...}
and do on.

现在要进行查询,你可以在第0行从第'row_key4'列开始获取切片......

现在你可能会问,“我的列密钥怎么样”?为此,您应该使用复合列名称。例如,最初看起来像这样的东西:

row_key1 -> {column1: v1, column2: v2, ...}

现在看起来像这样:

0 -> {[row_key1, column1]: v1, [row_key2, column2]: v2, ...}
and so on.

HTH

汤姆