Cassandra 中的集合数据类型
在本文中,我们将描述集合数据类型概述和每种集合数据类型的 Cassandra 查询语言 (CQL) 查询,并附有说明。 Cassandra 中有 3 种类型的集合数据类型。
1. SET
2. LIST
3. MAP
让我们一一讨论。
1套:
Set 是一个集合数据,我们可以在其中存储一组元素,以便用户可以拥有多个电子邮件地址,然后我们使用 set 集合数据类型来存储此类数据,该数据类型在查询时返回已排序的元素。它是唯一值的类型化集合。
句法:
Create table keyspace-Name.Table-Name(
field 1 data_type 1,
/*SET keyword is used to define collection data type.*/
field 1 set,
field 1 data_type 1,
key_constraint if any
);
步骤 1:使用以下 CQL 查询创建键空间。
CREATE KEYSPACE keyspace1
WITH replication = {'class': 'SimpleStrategy',
'replication_factor' : 1};
使用 keyspace1 的 CQL 查询
使用keyspace1;
CREATE TABLE Employee
(
E_id int,
E_name text,
/* set syntax to define E_email as list collection data type. */
E_email SET,
PRIMARY KEY(E_id)
);
步骤 2:使用集合数据类型插入的语法。
句法:
INSERT INTO table_name(field 1, field 2, field 3..)
VALUES('field1_value', {'field2_value1', 'field2_value2', ..},
{ 'field3_value1', 'field3_value2', ..}....);
使用 SET 插入的 CQL 查询:
INSERT INTO Employee (E_id, E_name, E_email)
VALUES(100, 'Ayush Agarwal', {'ayush@gmail.com’, ’ayush2@gmail.com’});
INSERT INTO Employee (E_id, E_name, E_email)
VALUES(101, 'Arpan mishra', {'arpan@gmail.com’, ’arpan2@gmail.com’});
INSERT INTO Employee (E_id, E_name, E_email)
VALUES(102, 'Ashish Rana', {'ashish@gmail.com’, ’ashish2@gmail.com’});
第 3 步: CQL 查询以检索表数据。
select * from Employee;
输出:
图 – Cassandra-Table_set
2. 清单:
在列表中,一个值可以多次存储。列表集合数据类型中的规则之一,元素的顺序不能改变。在列表中,一旦值被存储,元素就会获得一个特定的索引,然后可以通过这些特定的索引检索值。在列表中,元素不需要是唯一的,它可以被复制。
步骤 1:使用以下 CQL 查询创建表。
CREATE TABLE keyspace1.Employee
(
E_id int,
E_name text,
/* list syntax to define E_email as list collection data type. */
E_email list,
PRIMARY KEY(E_id)
);
步骤 2:使用列表集合数据类型插入的语法。
句法:
INSERT INTO table_name(field 1, field 2, field 3..)
VALUES(' field1_value', ['field2_value1', 'field2_value2', ..],
[ 'field3_value1', 'field3_value2', ..]....);
使用 LIST 插入的 CQL 查询:
INSERT INTO Employee (E_id, E_name, E_email)
VALUES(101, 'Anmol', ['Anmol@gmail.com’, ’anmol1@gmail.com’]);
INSERT INTO Employee (E_id, E_name, E_email)
VALUES(102, 'Aakash tomar', ['Akash@gmail.com’, ’Akash2@gmail.com’]);
INSERT INTO Employee (E_id, E_name, E_email)
VALUES(103, 'Ashish paliwal', ['ashish@gmail.com’, ’ashish2@gmail.com’]);
INSERT INTO Employee (E_id, E_name, E_email)
VALUES(104, 'Ashish Rana', ['a1@gmail.com’, ’a2@gmail.com’]);
第 3 步: CQL 查询以检索表数据。
select * from Employee;
输出:
图 –上述 CQL 查询的 LIST 表
3.地图:
在 MAP 中,键入键值对的集合,这样一对具有相应键名的值。 MAP 集合数据类型按唯一键排序。
步骤 1:使用以下 CQL 查询创建表。
CREATE TABLE keyspace1.Activity
(
E_id int,
E_name text,
task map,
PRIMARY KEY(E_id)
);
步骤 2:使用地图集合数据类型插入的语法。
句法:
INSERT INTO table_name(field 1, field 2, field 3..)
VALUES({'key1':'value1', 'key2':'value2'..........});
使用 MAP 进行插入的 CQL 查询:
INSERT INTO Employee (E_id, E_name, Task)
VALUES(001, 'Vaibhav Nirwal', {'2019-09-28':'collection data type',
'2019-09-29':'map data type'});
INSERT INTO Employee (E_id, E_name, Task)
VALUES(002, 'Aksh Tomar', {'2019-09-28':'database created',
'2019-09-29':'creating table'});
第 3 步: CQL 查询以检索表数据。
select * from Activity;
输出:
图 –上述 CQL 查询的 MAP 表