Apache Cassandra 集合数据类型
在我们学习Cassandra的过程中,我们将学习Cassandra集合数据类型的教程。我们将学习Cassandra的集合数据类型。它们与C、C++等语言中的数组和结构体意义相同。
此外,我们将讨论使用列表、集合和映射的Cassandra集合数据类型。
因此,让我们开始学习Cassandra集合数据类型。
Cassandra的集合数据类型
在Cassandra中,集合数据类型本质上是一个存储多个值的容器。通常,Cassandra-CQL集合数据类型由单个变量定义。这个变量本身具有多个值。
列表、集合和映射是一些集合数据类型。在这些Cassandra集合数据类型上,可以执行许多操作。其中包括创建、插入、更新和验证操作。
a) Cassandra列表
此数据类型的值以列表形式存储。此列表包含单个值的多个副本。对于列表数据类型,只有一个规则。
元素不能按顺序修改。在将值存储到列表后,元素会获得一个特定的索引。可以使用这些索引来获取值。
i) 创建表
在Cassandra中,用户可以使用CREATE TABLE命令来创建一个包含列表数据类型的表。表中可以有多个列。表创建语法如下:
cqlsh:<keyspace>>CREATE TABLE <table name>(column1 PRIMARY KEY,column2 list <data type>,column3 list <data type>,.....);
为“大学生”构建一个包含姓名、注册号和专业的表。
cqlsh> USE keyspace1; cqlsh:keyspace1> CREATE TABLE employee ... (EN int, ... NAME text, ... EMAIL LIST, ... PRIMARY KEY(EN), ... );
输出
学号 |
姓名 |
邮箱 |
---|---|---|
|
|
|
ii) 插入
用户可以使用INSERT INTO命令向表中添加元素。每个包含在方括号中的值都用逗号分隔。语法如下:
cqlsh:<keyspace>> INSERT INTO <table name>(column1, column2, column3,....) VALUES('R1value1',['R1value1','R1value2','R1value3'...]['R1value11','R1value12','R1value13'...]...);
示例
cqlsh:keyspace1> INSERT INTO college student (EN, NAME, EMAIL) ... VALUES(001,'hardik',{'[email protected]'}); cqlsh:keyspace1> INSERT INTO college student (EN, NAME, EMAIL) ... VALUES(002,'Ajites',{'[email protected]'}); cqlsh:keyspace1> INSERT INTO college student (EN, NAME, EMAIL) ... VALUES(003,'Pushpa',{'[email protected]'});
输出
学号 |
姓名 |
邮箱 |
---|---|---|
001 |
hardik |
|
002 |
Ajites |
|
003 |
Pushpa |
iii) 更新
Cassandra的UPDATE命令用于更新表中某些列的值。更新语法如下:
cqlsh:<keyspace> UPDATE<table name> SET <column2>=<column2>+['value'] where <column1>='some value';
示例
cqlsh:keyspace2>UPDATE college student SET EMAIL=EMAIL+['[email protected]'] where EN=001;
输出
学号 |
姓名 |
邮箱 |
---|---|---|
001 |
hardik |
|
002 |
Ajites |
|
003 |
Pushpa |
b) Cassandra集合
用户可以使用SET Cassandra集合数据类型来存储一组元素。执行后,集合的元素将以排序方式返回。
i. 创建表
用户可以使用Construct命令及以下语法来创建一个包含集合的表。
cqlsh:<keyspace> CREATE TABLE<table name> (column1 PRIMARY KEY, column2 set <data type>, column3 set <data type>.....);
示例
为“大学生”构建一个包含姓名、注册号和专业的表。
cqlsh> USE keyspace2; cqlsh:keyspace2> CREATE TABLE employee ... (EN int, ... NAME text, ... EMAIL LIST<text>, ... PRIMARY KEY(EN), ... );
输出
学号 |
姓名 |
邮箱 |
---|---|---|
|
|
|
ii. Cassandra插入
使用INSERT INTO命令及以下语法将值插入集合。
cqlsh:<keyspace>> INSERT INTO <table name>(column1, column2, column3...) VALUES('R1value',{'R1value1', 'R1value2',..},{ 'R1value11', 'R1value12',..}....);
示例
> cqlsh:keyspace2> INSERT INTO college student (EN, NAME, EMAIL) ... VALUES(001,'hardik',{'[email protected]'}); cqlsh:keyspace2> INSERT INTO college student (EN, NAME, EMAIL) ... VALUES(002,'Ajites',{'[email protected]'}); cqlsh:keyspace2> INSERT INTO college student (EN, NAME, EMAIL) ... VALUES(003,'Pushpa',{'[email protected]'});
输出
学号 |
姓名 |
邮箱 |
---|---|---|
001 |
hardik |
|
002 |
Ajites |
|
003 |
Pushpa |
iii. Cassandra更新
用户可以使用此语法更新集合中的内容。
cqlsh:<keyspace>>UPDATE <table name> SET <column2>=<column2>+['value'] where <column1>='some value';
示例
cqlsh:keyspace2>UPDATE college student SET EMAIL=EMAIL+['[email protected]'] where EN=001;
输出
学号 |
姓名 |
邮箱 |
---|---|---|
001 |
hardik |
|
002 |
Ajites |
|
003 |
Pushpa |
c) Cassandra映射
映射是一种Cassandra集合数据类型,它存储键值对。
i. 创建表
用户可以使用Construct命令及以下语法来创建一个包含映射的表。
cqlsh:<keyspace> CREATE TABLE<table name> (column1 PRIMARY KEY, column2 map <type, data type>, column3 map <type, data type>.....);
为“大学生”构建一个包含姓名、注册号和专业的表。
cqlsh> USE keyspace3; cqlsh:keyspace3> CREATE TABLE employee ... (EN int, ... NAME text, ... EMAIL LIST, ... PRIMARY KEY(EN), ... );
输出
学号 |
姓名 |
邮箱 |
---|---|---|
|
|
|
ii. 插入
使用INSERT INTO命令及以下语法将值插入映射。
cqlsh:<keyspace>> INSERT INTO <table name>(column1, column2, column3...) VALUES('R1value',{'R1value1':'R1value1' ,R1value2:'R1value01',..},{ 'R1value11':'R1value011','R1value12':'R1value012',..}....);
示例
cqlsh:keyspace3> INSERT INTO college student (EN, NAME, EMAIL) ... VALUES(001,'hardik',{'[email protected]'}); cqlsh:keyspace3> INSERT INTO college student (EN, NAME, EMAIL) ... VALUES(002,'Ajites',{'[email protected]'}); cqlsh:keyspace3> INSERT INTO college student (EN, NAME, EMAIL) ... VALUES(003,'Pushpa',{'[email protected]'});
输出
学号 |
姓名 |
邮箱 |
---|---|---|
001 |
hardik |
|
002 |
Ajites |
|
003 |
Pushpa |
iii. 更新
用户可以使用此方法修改集合的内容。
cqlsh:<keyspace>>UPDATE <table name> SET <column2>=<column2>+['value1':'value2'] where <column1>='some value';
示例
cqlsh:keyspace3>UPDATE college student SET EMAIL=EMAIL+['[email protected]'] where EN=001;
输出
学号 |
姓名 |
邮箱 |
---|---|---|
001 |
hardik |
|
002 |
Ajites |
|
003 |
Pushpa |
结论
这些是Apache Cassandra中的三种集合数据类型。通过Cassandra集合可以轻松进行任务管理。集合允许存储多个项目。