13

Cassandraの主キーにコレクション列を含めることはできますか?

例:

CREATE TABLE person (
  first_name text,
  emails set<text>,
  description text

  PRIMARY KEY (first_name, emails)
);
4

3 に答える 3

13

しばらく経ちましたが、これは主キーでマップを使用して検索するときに 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 型の列にインデックスを作成することもできますが、これは必ずしも良い考えではありません。

于 2016-03-19T11:06:00.467 に答える