HIカサンドラの調査を始めたばかりで、少し混乱しています。次のスキーマを提案できますか?
スキーマ:email, city, items1[], items2[]
入力:cityId, item1, item2
私は欲しい:
select email
where city=cityId
and item1 is NOT in items1[]
and item2 is NOT in items2[]
出来ますか?
HIカサンドラの調査を始めたばかりで、少し混乱しています。次のスキーマを提案できますか?
スキーマ:email, city, items1[], items2[]
入力:cityId, item1, item2
私は欲しい:
select email
where city=cityId
and item1 is NOT in items1[]
and item2 is NOT in items2[]
出来ますか?
これに対する完全な回答を得るには、もう少し詳細を提供する必要があるかもしれません。
Cassandra 0.7 以降では、セカンダリ インデックスを使用して、列の値に従って行を選択できます (つまり、city=cityId の行を選択します)。列のメタデータで「index_type: KEYS」を設定して、Cassandra スキーマでこれを有効にする必要があります。
詳細については、 http://www.datastax.com/dev/blog/whats-new-cassandra-07-secondary-indexesを参照してください。
Cassandra は否定を提供しないため、「NOT in items1[]」条件は、Cassandra ノードではなくクライアントでテストする必要がある場合があります。items1 と items2 に可能な値はいくつありますか (ほんの一握りですか、それとも数千ですか?)。
おそらく、この特定のタイプのクエリに答えるために、列ファミリーを設定する必要があります。つまり、item1 と item2 に基づくある種の複合キーを持つルックアップ テーブルです。ただし、item1 と item2 の潜在的な値が多数ある場合、これをサーバー側で維持するのは難しく、クライアント側で取得するにはコストがかかります。