0

CQL 3 で Cassandra 1.2.12 を使用していますが、カラム ファミリーのモデリングに問題があります。

現在、特定の時間の顧客データのスナップショットを保存しています。よく働く:

CREATE TABLE data (
  cust_id varchar,
  time timeuuid,
  data_text text,
  PRIMARY KEY (cust_id, time)
);

cust_id はパーティション キーで、time はクラスタリング ID です。したがって、私が理解しているように、テーブルの各行は次のように考えることができます。

| | cust_id | timeuuid1 : data_text | timeuuid2 : data_text |


| | CUST1 | この時点でのデータ | この時点でのデータ |

ここで、スナップショットごとに別のメトリック グループを保存したいと考えていますが、これらの各列の名前は固定されていません。次のようなものです:

| | cust_id | timeuuid1 : data_text | timeuuid1 : dynamicCol1 | timeuuid1 : dynamicCol2 | timeuuid1 : dynamicColN |


| | CUST1 | データ |{何らかの値} |{何らかの値} |{何らかの値} |

複合主キーを使用してタイムスタンプの動的列を実現しましたが、意味がわかれば、列の各クラスター内でこれを実現する方法がわかりません。たとえば、「dynamicColumnName」を既存の複合キーに追加すると、動的列ごとに顧客データが格納されることになりますが、これは私が望んでいるものではありません。

マップ列を使用せずにこれは可能ですか? あなたが助けてくれることを願っています、ありがとう!

4

1 に答える 1

0

私は CQL ユーザーではありません...thrift API を使用すると、X という名前の列の値を持つレコードを挿入/更新することで、列を列ファミリーに動的に追加できます。列 X はすぐそこに存在し始めます。その記録。

明示的に定義していない列を指定して、INSERT ステートメントを試しましたか? 同じ効果があると思います(列が作成されます)。

于 2014-02-04T14:46:14.693 に答える