1

私のデータモデルはこのようになります

      #keyspace_name{
             #columnfamily1
               {startDate_mobileNo:  // row key
                       { Call_TYpe:  // super column
                               { xyz: value
                                 endDate : value;
                                }
                        }
                }

ここで、startDate_mobileNo、Call_TYPE、および endDate をフィルタリングする検索結果を作成します。これは、endDate をセカンダリ インデックスとして作成することで実行できます。ただし、スーパー カラムでのセカンダリ インデックス作成はできません。だから私は続行する方法を理解することができません。はい、単純な Java コーディングを使用して結果データをフィルタリングすることにより、セカンダリ インデックス フィルタリングの部分を実行できます。しかし、大きなデータの場合、メモリが不足する可能性があるため、これは正しい考えではないと思います。そこで、私にいくつかのアイデアを提案してください。

前もって感謝します

4

1 に答える 1

3

Cassandra 1.1 で新しくファーストクラスの CQL がサポートされた複合キーを使用して、必要なものを取得できると思います。詳細については、コンポジットを使用したモデリングに関するこのブログ投稿を参照してください。

スーパーカラムは間違いなく間違った方法です。スーパーカラムは常に多少問題があり、現在は廃止されており、代わりにコンポジットを使用して必要なものすべてを取得できます。

私があなたのモデルを正しく解釈しているなら、あなたは次のようなことをするかもしれません:

CREATE TABLE columnfamily1 (
    startDate timestamp,
    mobileNo text,
    Call_TYpe int,
    endDate timestamp,
    xyz text,
    PRIMARY KEY (startDate, mobileNo, Call_TYpe)
);

必要に応じて、endDate にセカンダリ インデックスを作成することもできます。あなたがそうするかどうかは私にははっきりしません。

サポートする必要がある並べ替えクエリのより具体的な例を挙げたい場合は、さらにお力になれるかもしれません。

于 2012-04-27T21:15:57.467 に答える