7

ここでは、動的な列ファミリーを取得するために特別な努力は必要ないと言われています。しかし、未定義の列に値を設定しようとすると、常に例外が発生します。

次のような列ファミリーを作成しました。

CREATE TABLE places (
   latitude double,
   longitude double,
   name text,
   tags text,
   PRIMARY KEY (latitude, longitude, name)
)

ところで:タグ列を定義する必要がありました。誰かが私に理由を説明できますか?おそらく、他のすべての列がインデックスの一部であるためですか?

次のようなデータを挿入する場合:

INSERT INTO places ("latitude","longitude","name","tags") VALUES (49.797888,9.934771,'Test','foo,bar')

それはうまくいきます!しかし、私が試してみると:

INSERT INTO places ("latitude","longitude","name","tags","website") VALUES (49.797888,9.934771,'Test','foo,bar','test.de')

次のエラーが発生します:

Bad Request: Unknown identifier website
text could not be lexed at line 1, char 21

列を動的に追加するには、どの変更が必要ですか?

サーバー上で直接cqlshを使用してCQL3でCassandra1.1.9を使用しています。

4

2 に答える 2

12

CQL3は動的列ファミリーをサポートしていますが、最初にテーブルスキーマを変更する必要があります

ALTER TABLE places ADD website varchar;

1.2のドキュメントCQLの詳細なスライドを確認してください

于 2013-01-23T01:23:25.967 に答える
7

CQL3では、列のメタデータが存在する必要があります。CQL3は、実際には基になるストレージ行を抽象化したものであるため、1対1ではありません。動的な列名を使用する場合(およびそれらの優れたユースケースが多数ある場合)は、従来のThriftインターフェースを使用します(選択したクライアントライブラリを介して)。これにより、何を保存するかを完全に制御できます。

于 2013-01-22T14:40:09.737 に答える