8

cassandra データモデリングに関するPatrick McFadin のこの youtube ビデオを見たところです。

次のように、1 つのテーブルがありました。

create table user_activity_history {
  username varchar,
  interaction_date varchar,
  activity_code varchar,
  detail varchar,
  PRIMARY KEY((username,interaction_date),interaction_time)
);

主キーはなぜですか((username,interaction_date),interaction_time)。とどう違うの(username,interaction_date,interaction_time)

4

1 に答える 1

14

違いは、テーブルのpartition_key. 通常、PRIMARY KEY の最初の要素はパーティション キーでもあります。これは、たとえば次のように使用して、クラスター内のデータの物理的な場所を定義します。

PRIMARY KEY(username,interaction_date,interaction_time)

テーブルに挿入されたデータは、次のように分割されます (物理的に配置されusernameます)。

PRIMARY KEY((username,interaction_date),interaction_time)

username,interaction_date組み合わせによって分割されます。後者の方式の利点は、単一に関連するデータをusernameクラスター内の複数のノードに格納できることです。

CREATE TABLEに関する datastax の CQL ドキュメントに partition_keys の詳細があります。

複合 PRIMARY KEY を使用すると、Cassandra は定義で宣言された最初の列をパーティション キーとして扱い、行のすべての列を同じ物理ノードに格納します。複合パーティション キーを使用すると、Cassandra はネストされた括弧内の列をパーティション キーとして扱い、行の列を複数のノードに格納します。追加の括弧セットを使用して複合パーティション キーを宣言し、どの列がデータをパーティション分割するかを定義します。

于 2013-10-24T08:44:21.857 に答える