1

Cassandraに1つの行があり、キーとして整数といくつかの値を持つ複数の列があるとします。HectorでSliceQueryを使用すると、この列の1つの範囲を取得することができます。1つのクエリで複数の範囲を取得する可能性はありますか?

カサンドラ行の例:

columns 3, 7, 12, 34, 45, 46, 59, 98, 99
----------------------------------------
values  a, f,  e,  v,  a,  r,  r,  o,  k

Hectorを使用して、 1つのクエリで20から30および50から90のキーを持つすべての列を取得するにはどうすればよいですか?

4

2 に答える 2

3

PlayOrmオープンソースプロジェクトでそれを解決するために、これを行います...

Hectorには、これを実行できるようにastyanaxのような非同期呼び出しがありますか?

for(Query q : queryList) {
// this next call is non-blocking..sends requests and returns immediately not waiting for response
   Future f = q.executeAsycn(); 
   futures.add(f);
}

//Now, both column slices are happening in parallel at the SAME time

for(Future f : futures) {
   Result r = f.get(); //this will block for the first result
}

このように、APIがとにかく1つの単一のAPI呼び出しを持っているかのように高速であるため、1つの呼び出しは必要ありません。

ディーン

于 2012-10-09T14:48:01.600 に答える
2

私はそうは思わない。1つのクエリに保持するには、対象のすべてのスライスを含む単一のスライスを使用する必要があります。次に、クライアント側で、列が対象の範囲の1つに該当するかどうかを列ごとに決定します。 。

1回の呼び出しでその1つの大きなスライスのすべての列を処理するにはデータが多すぎる場合は、ページ付けを使用してクライアント側のデータのフットプリントを減らすことができますが、元のスライスごとに個別に呼び出します。

于 2012-10-09T12:37:38.083 に答える