📜  Apache Cassandra 中的集合数据类型

📅  最后修改于: 2021-09-10 02:31:15             🧑  作者: Mango

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 表