Cassandra - CQL集合

CQL提供了使用Collection数据类型的功能.使用这些Collection类型,您可以在单个变量中存储多个值.本章介绍如何在Cassandra中使用集合.

列表

列表用于

  • 要维护元素的顺序,并且

  • 值将被多次存储。

您可以使用列表中元素的索引获取列表数据类型的值。

使用列表创建表

下面给出了一个示例,用于创建包含两列(名称和电子邮件)的示例表。 要存储多封电子邮件,我们正在使用列表。

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

将数据插入列表

将数据插入列表中的元素时,在方括号[]中输入用逗号分隔的所有值,如下所示。

cqlsh:it352> INSERT INTO data(name, email) VALUES ('ramu',
['abc@gmail.com','cba@yahoo.com'])

更新列表

下面给出了一个更新名为data的表中的列表数据类型的示例。 在这里,我们将向列表添加另一封电子邮件。

cqlsh:it352> UPDATE data
... SET email = email &plus;['xyz@IT屋.com']
... where name = 'ramu';

验证

如果使用SELECT语句验证表,则会得到以下结果:

cqlsh:it352> SELECT * FROM data;

 name | email
------+--------------------------------------------------------------
 ramu | ['abc@gmail.com', 'cba@yahoo.com', 'xyz@IT屋.com']

(1 rows)

SET

Set是一种用于存储一组元素的数据类型。 集合的元素将按排序顺序返回。

使用Set创建表

以下示例创建一个包含两列(名称和电话)的示例表。 为了存储多个电话号码,我们正在使用set。

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

将数据插入集合

在将数据插入集合中的元素时,输入在花括号{}内用逗号分隔的所有值,如下所示。

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

更新Set

以下代码显示如何更新名为data2的表中的集。 我们在这里添加另一个电话号码。

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

验证

如果使用SELECT语句验证表,则会得到以下结果:

cqlsh:it1352> SELECT * FROM data2;

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

(1 rows)

MAP

Map是一种数据类型,用于存储键值对元素。

使用Map创建表

以下示例显示如何创建包含两列(名称和地址)的示例表。 为了存储多个地址值,我们使用map。

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

将数据插入地图

在将数据插入到地图中的元素时,输入所有在花括号{}内用逗号分隔的键:值对,如下所示.

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

更新Set

以下代码显示如何更新名为data3的表中的映射数据类型。 在这里,我们正在改变关键办公室的价值,也就是说,我们正在更改名为robin的人的办公地址。

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

Verification

If you verify the table using SELECT statement, you will get the following result &minus;

cqlsh:it1352> select * from data3;

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

(1 rows)