Cassandraの主キーにコレクション列を含めることはできますか?
例:
CREATE TABLE person (
first_name text,
emails set<text>,
description text
PRIMARY KEY (first_name, emails)
);
Cassandraの主キーにコレクション列を含めることはできますか?
例:
CREATE TABLE person (
first_name text,
emails set<text>,
description text
PRIMARY KEY (first_name, emails)
);
しばらく経ちましたが、これは主キーでマップを使用して検索するときに Google の最初のページにあるため、更新する価値があると思いました。
Cassandraでは(2.1 以降だと思います) プライマリ キーでコレクションを使用できるようになりました (凍結されている場合) 。
凍結された値は、複数のコンポーネントを単一の値にシリアル化します。凍結されていない型では、個々のフィールドを更新できます。Cassandra は、凍結された型の値を BLOB として扱います。値全体を上書きする必要があります。
凍結すると、コレクションは本質的に不変になり、インプレースでの変更が許可されなくなるため、主キーに適したものになります。
フローズン リストを使用した例を次に示します。
CREATE TABLE test_frozen (
app_id varchar,
kind varchar,
properties frozen <list<text>>,
PRIMARY KEY ((app_id, kind), properties));
2.1 以降、Cassandra では map、set、または list 型の列にインデックスを作成することもできますが、これは必ずしも良い考えではありません。