2

cql3 でテーブルを定義しました。それを記述すると、以下が返されます。

CREATE TABLE の結果 (
id uuid PRIMARY KEY、
casename テキスト、
結果テキスト、
run int、
ユーザー テキスト
) WITH ...

これは列ファミリーを制限するべきではないという事実を利用して、新しい列と値のペアを追加しようとしています。

insert into results (id, sogginess) values(3d6f63a4-c1e0-4dd8-b043-8e0754122f23, 'high') ;

しかし、これはうまくいきません。cassandra-cli を使用すると、標準設定構文を使用して水浸しの値を追加でき、行は正常に永続化されます。ただし、cql3 に戻っても、select * クエリはこの新しい列を返さず、describe も新しい列の水浸しを示しません。

これは、cql3 の行に任意のデータを追加できず、定義されたスキーマに拘束されることを意味しますか? そうでない場合は、どうすればよいですか?

4

1 に答える 1

4

TL;DR;
いいえ。ただし、コレクションを使用できます。phonenumbers set<text>

CQL 3 では、すべての列がメタデータで定義されることが想定されているため、スキーマにバインドされています。

そうでない場合は、どうすればよいですか?

まあ、あなたはできません。できることは、コレクションを使用してデータ モデルを構造化することです。倹約によって任意の列を追加することは、悪い習慣と見なされます。私のアドバイスは、 CQL3 でのワイド行サポートに関する datastax の記事を読むことです。また、これらの質問は関連しています(重複していない場合...)ので、それらを見てください:

  1. 現在、cql3 には cassandra のスキーマが必要ですか
  2. 実行時に列名が作成される CQL3 を使用して、Cassandra 1.2 でテーブルを作成します。
于 2013-06-28T09:33:51.290 に答える