20,000列以上のWIDE列テーブルを作成しようとしています
当初、私は次のものを使用すると考えていました。
CREATE TABLE details (
key TEXT,
detail map<TEXT, TEXT>
PRIMARY KEY (KEY)
);
このテーブルへの挿入は正常に機能します
UPDATE details SET detail = detail + { 'col1': '12'} where key='123' ;
UPDATE details SET detail = detail + { 'col20000': 'ABCD'} where key='123' ;
しかし、私は個々の詳細を読みたいと思います:
select detail[col1] where key='123'
このクエリを実行すると、次のエラーが発生します。
no viable alternative at input '['
これは機能しますか、それとも別のアプローチが必要ですか?
コレクションは、一度にフェッチするデータの小さなグループです。
より細かいレベルでタプルにアクセスし、それでも「特定のキーのデータのすべてのペアは何か」を尋ねることができる場合は、次のようなテーブルを使用する必要があります。
CREATE TABLE details (
key TEXT,
detail_key text,
detail_value text,
PRIMARY KEY (key, detail_key)
);
これにより、SELECT * FROM details WHERE key = ?
と同様 SELECT * FROM detail WHERE key = ? AND detail_key = ?
。
基本的に、この機能はcassandraではまだサポートされていません。
これを参照してください cql3コレクション