Cassandra-cql-collections

提供:Dev Guides
移動先:案内検索

Cassandra-CQLコレクション

CQLは、Collectionデータ型を使用する機能を提供します。 これらのコレクションタイプを使用すると、1つの変数に複数の値を保存できます。 この章では、Cassandraでコレクションを使用する方法について説明します。

List

リストは次の場合に使用されます

  • 要素の順序が維持されること、および
  • 値は複数回保存されます。

リスト内の要素のインデックスを使用して、リストデータ型の値を取得できます。

リスト付きのテーブルを作成する

以下に、名前とメールという2つの列を持つサンプルテーブルを作成する例を示します。 複数のメールを保存するために、リストを使用しています。

cqlsh:finddevguides> CREATE TABLE data(name text PRIMARY KEY, email list<text>);

リストへのデータの挿入

リスト内の要素にデータを挿入するときに、下に示すように、すべての値を角カッコ[]内にコンマで区切って入力します。

cqlsh:finddevguides> INSERT INTO data(name, email) VALUES ('ramu',
['[email protected]','[email protected]'])

リストを更新する

以下に示すのは、 data というテーブルのリストデータ型を更新する例です。 ここで、リストに別のメールを追加しています。

cqlsh:finddevguides> UPDATE data
... SET email = email &plus;['[email protected]']
... where name = 'ramu';

検証

SELECTステートメントを使用してテーブルを検証すると、次の結果が得られます-

cqlsh:finddevguides> SELECT *FROM data;

 name | email
------+--------------------------------------------------------------
 ramu | ['[email protected]', '[email protected]', '[email protected]']

(1 rows)

SET

Setは、要素のグループを格納するために使用されるデータ型です。 セットの要素は、ソートされた順序で返されます。

セット付きのテーブルの作成

次の例では、nameとphoneという2つの列を持つサンプルテーブルを作成します。 複数の電話番号を保存するために、setを使用しています。

cqlsh:finddevguides> CREATE TABLE data2 (name text PRIMARY KEY, phone set<varint>);

セットへのデータの挿入

セット内の要素にデータを挿入するときに、以下に示すように、中括弧\ {}内にすべての値をコンマで区切って入力します。

cqlsh:finddevguides> INSERT INTO data2(name, phone)VALUES ('rahman',    {9848022338,9848022339});

セットの更新

次のコードは、data2という名前のテーブルのセットを更新する方法を示しています。 ここでは、セットに別の電話番号を追加しています。

cqlsh:finddevguides> UPDATE data2
   ... SET phone = phone + {9848022330}
   ... where name = 'rahman';

検証

SELECTステートメントを使用してテーブルを検証すると、次の結果が得られます-

cqlsh:finddevguides> SELECT* FROM data2;

   name | phone
--------+--------------------------------------
 rahman | {9848022330, 9848022338, 9848022339}

(1 rows)

MAP

マップは、要素のキーと値のペアを格納するために使用されるデータ型です。

マップ付きのテーブルの作成

次の例は、名前と住所の2つの列を持つサンプルテーブルを作成する方法を示しています。 複数のアドレス値を保存するために、マップを使用しています。

cqlsh:finddevguides> CREATE TABLE data3 (name text PRIMARY KEY, address
map<timestamp, text>);

マップへのデータの挿入

マップの要素にデータを挿入するときに、以下に示すように、すべての key:value ペアを中括弧\ {}内にコンマで区切って入力します。

cqlsh:finddevguides> INSERT INTO data3 (name, address)
   VALUES ('robin', {'home' : 'hyderabad' , 'office' : 'Delhi' } );

セットの更新

次のコードは、data3という名前のテーブルのマップデータタイプを更新する方法を示しています。 ここでは、キーオフィスの値を変更しています。つまり、robinという名前の人のオフィスの住所を変更しています。

cqlsh:finddevguides> UPDATE data3
   ... SET address = address+{'office':'mumbai'}
   ... WHERE name = 'robin';

検証

SELECTステートメントを使用してテーブルを検証すると、次の結果が得られます-

cqlsh:finddevguides> select * from data3;

  name | address
-------+-------------------------------------------
 robin | {'home': 'hyderabad', 'office': 'mumbai'}

(1 rows)