私はCassandraバージョン2.0を持っています。その中に全く新しいので、質問... 私はテーブルT1
を持っています。名前は1,2,3 ... 14です。 Partitioning key
は、列1
、2
です。 Clustering key
は、3
,1
,5
です。私は次のクエリを実行する必要があり :値を繰り返しているようどのようにクエリを動作させるには?
SELECT 1,2,7 FROM T1 where 2='A';
列2
は、フラグです。 は、私は次のエラーを取得する:
Unable to execute CQL query: Partitioning column 2 cannot be restricted because the preceding column 1 is either not restricted or is restricted by a non-EQ relation
だから、それを行うための正しい方法は何ですか?私は本当にすでにフィルタリングされたデータを取得する必要があります。ありがとう。
これは多くの助けになります、ありがとうございます。つまり、T1_indexではT1に挿入するたびに別々の挿入を行う必要があるということですか? –
はい、残念ながら。カサンドラは「非正規化」を効果的に意味する「非正規化」が好きです。また、外部キーの制約やそのようなものをサポートしていないため、アプリケーションコードは(複数の)関連テーブルに書き込むことと、そこから読み込むことを知る必要があります。 – Castaglia
私はちょうどこれを試して、私のスキーマでそれを試してみました、そして、あなたが示したものに基づいて私の仕事のための解決策を見つけたようです。したがって、特定の選択クエリごとに、別のテーブルを作成し、そのテーブルを自分のコードに挿入する必要があると言えます。これらの挿入が無視できるほど稀です。ですから、Cassandraは膨大な量の読み込みや、時折の挿入や更新に適しています。再び、私はそれと完全にRDBMSの男の新しいです)カサンドラの内部には、コードを複数回挿入するのではなく、すべてのテーブルを更新し続けるメカニズムがありますか? –