0

はっきりさせて

次のような UTF8 キーを持つ列ファミリーがあります:apple#NewYork、banana#LosAngeles、banana#NewYork、cherry#NewYork など

それらはソートされているので必要ですが、すべての「バナナ」開始キーを取得したいですか?

それは可能ですか、それとも回避策はありますか?

4

1 に答える 1

1

複合型はどうですか?

現在の行を次のような列にマップします

row_key => { バナナ:a => "希望する値", バナナ:b => "希望する値", ... }

複合型のメリットは

  1. ソート中に型プロパティを保持します
  2. 複合キーa:b:cの場合、a、a:b の範囲内のすべての列に対してクエリを実行したり、a:b:c などのポイント クエリを実行したりできます。

これで、たとえば phpcassa Exを使用して列スライスを実行できます。

row_key => { 1:a => 1, 1:b => 1, 10:bb => 1, 1:c => 2}
ColumnSlice(array(1), array(1)) => All Columns with first component equal to 1
ColumnSlice(array(1), array(10)) => All Columns with first component between 1 and 10
ColumnSlice("", array(1, 'c')) => All Columns from the beginning of row whose first component less than 1 and second component less than 'c' 

上記のことを逆に行うことができ、包括的制限と排他的制限で遊ぶこともできます。

また、覚えておくべき点が 1 つあります。最初のコンポーネントをスキップして、2 番目のコンポーネント < x の範囲内のすべての列を直接要求することはできません。

行キーでさえ複合型をサポートしますが、ランダム パーティショナーを使用している場合は意味がありません。

于 2012-05-12T09:39:01.217 に答える