編集1:元の質問の後に問題を説明するケースを追加しました。
キーの一部ではない列についてクエリを実行したいと思います。正しく理解できれば、その列にセカンダリインデックスを定義する必要があります。ただし、(等式条件だけでなく)より大きい条件を使用したいのですが、それでもサポートされていないようです。
私は何かが足りないのですか?この問題にどのように対処しますか?
私の希望するセットアップ:
Cassandra 1.1.6
CQL3
CREATE TABLE Table1(
KeyA int,
KeyB int,
ValueA int,
PRIMARY KEY (KeyA, KeyB)
);
CREATE INDEX ON Table1 (ValueA);
SELECT * FROM Table1 WHERE ValueA > 3000;
複合キーを使用してColumnFamiliesでセカンダリインデックスを定義することは、Cassandra 1.1.6ではまだサポートされていないため、キーの1つを削除する一時的な解決策を決定する必要がありますが、非等式条件でも同じ問題が発生します。
これに対処する別の方法はありますか?
お時間をいただきありがとうございます。
関連するソース: http ://cassandra.apache.org/doc/cql3/CQL.html#selectStmt http://www.datastax.com/docs/1.1/ddl/indexes
編集1
これが問題を説明するケースです。rs-atlが指摘したように、これはデータモデルの問題である可能性があります。すべてのユーザーの列ファミリーをstackoverflowに保持しているとしましょう。ユーザーごとに、統計のバッチを保持します(Reputation、NumOfAnswers、NumOfVotes ...すべてがintです)。これらの統計を照会して、関連するユーザーを取得したいと思います。
CREATE TABLE UserStats(
UserID int,
Reputation int,
NumOfAnswers int,
.
.
.
A lot of stats...
.
.
.
NumOfVotes int,
PRIMARY KEY (UserID)
);
今、私はそれらの統計に基づいてUserIDをスライスすることに興味があります。レピュテーションが10Kを超えるすべてのユーザー、回答が5未満のすべてのユーザーなどが必要です。
それがお役に立てば幸いです。再度、感謝します。