Cassandra 简明教程

Cassandra - CQL Collections

CQL 提供了使用集合数据类型的功能。使用这些集合类型,你可以在单个变量中存储多个值。本小节解释了如何在 Cassandra 中使用集合。

List

列表用在以下情况:

  1. 元素的顺序需要维护,且

  2. 一个值需要被存储多次。

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

Creating a Table with List

下面是一个使用两个列名和电子邮件创建样本表的示例。为了存储多封电子邮件,我们使用列表。

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

Inserting Data into a List

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

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

Updating a List

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

cqlsh:tutorialspoint> UPDATE data
... SET email = email +['xyz@tutorialspoint.com']
... where name = 'ramu';

Verification

如果你使用 SELECT 语句验证该表,你会得到以下结果 −

cqlsh:tutorialspoint> SELECT * FROM data;

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

(1 rows)

SET

集合是一个用于存储一群元素的数据类型。集合的元素将以排序顺序返回。

Creating a Table with Set

以下示例创建一个有两个列名和 phone 的样本表。为了存储多个电话号码,我们使用集合。

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

Inserting Data into a Set

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

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

Updating a Set

以下代码展示了如何更新数据2 表中的集合。这里我们向集合中添加了另一个电话号码。

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

Verification

如果你使用 SELECT 语句验证该表,你会得到以下结果 −

cqlsh:tutorialspoint> SELECT * FROM data2;

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

(1 rows)

MAP

映射是一种用于存储元素键值对的数据类型。

Creating a Table with Map

以下示例展示了如何创建一个有两个列名和地址的样本表。为了存储多个地址值,我们使用映射。

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

Inserting Data into a Map

将数据插入地图中的元素时,请在花括号 {} 中输入所有以逗号分隔的 key : value 对,如下所示。

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

Updating a Set

以下代码展示如何更新名为 data3 的表中的 map 数据类型。这里我们更改了键 office 的值,也就是更改了名为 robin 的人员的办公室地址。

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

Verification

如果你使用 SELECT 语句验证该表,你会得到以下结果 −

cqlsh:tutorialspoint> select * from data3;

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

(1 rows)