2

CQl3に次の表があります

create table userInfo
(
 userid text,
 email text,
 firstName text,
 lastName text,
 city text,
 Primary key (userid,email)
);

ここで、ユーザーの選択に従って、このテーブルに2つの列COL1とCOL2を動的に追加したいと思います。どうすればよいですか。

私は次のことをしました

ALTER TABLE ADD COL1 text;
ALTER TABLE ADD COL2 text;

COL1とCOL2をテーブルに追加しました。次に、userInfo(..、..、COL1、..)に値(..、..、'some value'、..)を挿入すると、COL1にNULLが挿入されます。

列を動的に追加するための良い方法を提案します。私が思うように、追加する列の数が多い場合、ALTERテーブルは良い方法ではないと思います。JavaプログラムのHectorライブラリを使用して、列を動的に追加しています。

4

1 に答える 1

4

おそらく、CQLは最良の選択ではありません。CQLでは、SQLのような構文機能を可能にするためにスキーマを事前に定義する必要がありますが、Cassandraの便利な動的機能の一部が失われます。ほぼすべてのCassandraクライアントのThriftベースのミューテーション機能を使用して、書き込みたい列に名前を付けるだけで、存在しない場合は作成されます。

例えば:

ks.insert(key, createColumnPath(colName), bytes(value));
于 2013-02-11T14:01:19.633 に答える