16

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 '['

これは機能しますか、それとも別のアプローチが必要ですか?

4

3 に答える 3

15

コレクションは、一度にすべて取得するデータの小さなグループです。

より細かいレベルでタプルにアクセスしたいが、「特定のキーのすべてのデータのペアは何ですか」と尋ねることができる場合は、次のようなテーブルを使用する必要があります。

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 = ?.

于 2013-04-17T13:34:35.047 に答える
7

基本的に、この機能は Cassandra ではまだサポートされていません。

このcql3 コレクションを参照してください

于 2013-04-17T06:39:44.683 に答える