Cassandra Slice CompositeTypeの一部のクエリ

私は4つのフィールド(フィールド1、フィールド2、フィールド3、フィールド4)で作られた複合列を持っています。次のスライスクエリを実行する必要があります。 1.フィールド2が特定の値を持ち、他のフィールドが重要でないすべての複合列を取得します。 ( 'ACTIVE'、 '35'、 'Name'、 'Time')、( 'INACTIVE'、 '35'、 'C​​ity'、 'C​​ountry')の3つの複合列があるとします。 ( 'PASSIVE'、 '25'、 'Time'、 'Zone')。フィールド3の行キーと値が '35'であるため、最初の2つの複合カラムで結果を取得する必要があります。どんな提案も高く評価されます。

3
@ tom.wilkie、コメントの代わりにこれを答えにする必要があります。
追加された 著者 Tyler Hobbs,
フィールド1にはいくつの値がありますか?複合キーを持つ列は、最初に最初の次元、次に次の次元などでソートされます。 field2 = xですべての値を取得するには、少なくとも| field1 |読み取り、または行全体をスキャンします。あなたはフィールド2とフィールド1の交換を考えましたか?そうすれば、このクエリが簡単になります。
追加された 著者 tom.wilkie,
field1を使ってクエリを実行する必要があります。これが最初の場所に置かれた理由です。また、私の場合、field1が持つことができる(ACTIVE、INACTIVE、およびPASSIVE)固有値は3つしかありません。 Field2はIDであり、数百万のユニークな値を持つことができます。残りのフィールドでも同じです。
追加された 著者 user1064949,

1 答え

フィールド1にはいくつの値がありますか?複合キーを持つ列は、最初に最初の次元、次に次の次元などでソートされます。 field2 = xですべての値を取得するには、少なくとも| field1 |読み取り、または行全体をスキャンします。あなたはフィールド2とフィールド1の交換を考えましたか?そうすれば、このクエリが簡単になります。

field1 = xのすべての値に対してクエリを実行する必要があり、field2 = yを使用してクエリを個別に実行する必要がある場合は、複合キーのディメンションの順序が異なるようにデータを2回挿入することもできます。これは、日付が追記型である場合に最適です。これが受け入れられない場合、唯一のオプションは3つのクエリを行うことです:

["ACTIVE";y;"";""] -> ["ACTIVE";y;"";""] ["INACTIVE";y:"";""] -> ["INACTIVE";y:"";""] ["PASSIVE";y;"";"" -> ["PASSIVE";y:"";""]

field1に可能な値が3つ以上ある場合、これはうまく動作しません。

1
追加された