0

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[]

出来ますか?

4

1 に答える 1

2

これに対する完全な回答を得るには、もう少し詳細を提供する必要があるかもしれません。

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 の潜在的な値が多数ある場合、これをサーバー側で維持するのは難しく、クライアント側で取得するにはコストがかかります。

于 2011-04-13T21:45:35.923 に答える