次のような SQL クエリと同様に、Cassandra で列ファミリーを部分的に検索しようとしています。
SELECT 関数に関するdatastax のドキュメントを読みましたが、部分的な WHERE 基準のサポートが見つからないようです。何か案は?
次のような SQL クエリと同様に、Cassandra で列ファミリーを部分的に検索しようとしています。
SELECT 関数に関するdatastax のドキュメントを読みましたが、部分的な WHERE 基準のサポートが見つからないようです。何か案は?
Cassandra では、このようなワイルドカードのサポートはありませんが、同じ最終結果が得られるようにデータをモデル化できます。
このクエリを実行する列を取得し、それを 2 番目の列ファミリーに非正規化します。col
この CFには、ワイルド カード クエリを実行する値として列名を持つ単一の幅の行があります。この CF の列値は、元の CF の行キーまたは元の行のその他の表現のいずれかです。
次に、スライスを使用して、関心のある値を取得します。たとえば、これがスライスする幅の広い行である場合:
+---------+----------+--------+----------+---------+--------+----------+
| RowKey | aardvark | abacus | abacuses | abandon | accent | accident |
| +----------+--------+----------+---------+--------+----------+
| | | | | | | |
| | | | | | | |
+---------+----------+-----------------------------+--------+----------+
CQL を使用すると、次のクエリを使用して「aba*」で始まるすべてを選択できます*:
SELECT 'aba'..'abb' from some_cf where RowKey = some_row_key;
これにより、「そろばん」、「そろばん」、および「放棄」の列が得られます。
この戦略には、次の点に注意してください。
word
これを行う 1 つの方法は、 :の複合列を使用することですsome_unique_value
。Cassandra では、アドホック クエリを実行する簡単な方法が提供されないことに注意してください。代わりに、データをどのように使用するかを理解し、それに応じて CF をモデル化する必要があります。このようなデータのモデリングの詳細については、Cassandra でのデータのインデックス作成に関するEd Anuff のブログ投稿をご覧ください。
*列をスライスするための CQL 構文は、Cassandra の今後のリリースで変更されることに注意してください。