2012-01-10 6 views
0

RangeSlicesQueryを使用して 'n'番目の行キーから改ページする方法はありますか?Cassandra:RangeSlicesQueryを使用して 'n'番目の行キーから改ページする方法

データはRandomPartitionerに基づいており、setRange関数のreverseオプションは行にない列に対してのみ適用されるようです。 (http://tinyurl.com/73tncn3)

例:

row_key1

row_key2

row_key3

row_key4

row_key5

row_key6

  • endkey = row_key4、reverse = trueを設定すると、&の行数= 2が出力されます。

予想:

row_key3

row_key4

受け取っ:

row_key1

row_key2

  • startkey = row_key4、reverse = trueを設定すると、&の行数= 2は、出力後に となります。

受信

row_key4

row_key5

答えて

1

RandomPartitionerを使用する場合、Cassandraの行を格納する有効な順序はランダムです。したがって、期待通りに範囲スライスを行うことはできません。

ビューを連続して実体化し、行キーの計算されたバケットを使用します。たとえば、行キーは、実際の行キーは、/ 10、およびその行は10本当の行含まれている可能性が考えられます。今、あなたのクエリを実行するには

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

を、あなたが列から、行0でgetスライスを行います'row_key4' ...

ここで、「私の列キーはどうですか?」と尋ねることができます。このために、複合列名を使用する必要があります。例えば、本来はこのように見えた何か:

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

は今、次のようになります。

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

HTH

トム

関連する問題