Cassandra CRUD操作 – 创建,更新,读取和删除

1. 目的

在本章中,将了解Cassandra CURD操作:创建,更新,读取和删除,将介绍Cassandra中每个CURD操作的语法和示例。

2. 什么是Cassandra CURD操作

Cassandra CURD Operation代表Create,Update,Read和Delete 操作。 这些操作用于操纵Cassandra中的数据。 

创建操作 (Create Operation)

创建表

创建新表使用CREATE TABLE语句, 语法如下所示:

create_table_statement ::=  CREATE TABLE [ IF NOT EXISTS ] table_name
                            '('
                                column_definition
                                ( ',' column_definition )*
                                [ ',' PRIMARY KEY '(' primary_key ')' ]
                            ')' [ WITH table_options ]
column_definition      ::=  column_name cql_type [ STATIC ] [ PRIMARY KEY]
primary_key            ::=  partition_key [ ',' clustering_columns ]
partition_key          ::=  column_name
                            | '(' column_name ( ',' column_name )* ')'
clustering_columns     ::=  column_name ( ',' column_name )*
table_options          ::=  COMPACT STORAGE [ AND table_options ]
                            | CLUSTERING ORDER BY '(' clustering_order ')' [ AND table_options ]
                            | options
clustering_order       ::=  column_name (ASC | DESC) ( ',' column_name (ASC | DESC) )*

代码示例如:

CREATE TABLE loads (
    machine inet,
    cpu int,
    mtime timeuuid,
    load float,
    PRIMARY KEY ((machine, cpu), mtime)
) WITH CLUSTERING ORDER BY (mtime DESC);

添加数据

用户可以使用Cassandra CURD操作将数据插入表中。 数据存储在表格中一行的列中。 使用INSERT命令,用户可以执行此操作:

INSERT INTO <table name>
(<column1>,<column2>....)
VALUES (<value1>,<value2>...)
USING<option>

创建一个表数据来说明添加数据操作。 示例包含一个表格,其中包含有关大学学生的信息。 下表将提供有关学生的详细信息:

cqlsh:keyspace1> INSERT INTO student(en, name, branch, phone, city)
VALUES(001, ‘Ayush’, ‘Electrical Engineering’, 9999999999, ‘Boston’);
cqlsh:keyspace1> INSERT INTO student(en, name, branch, phone, city)
VALUES(002, ‘Aarav’, ‘Computer Engineering’, 8888888888, ‘New York City’);
cqlsh:keyspace1> INSERT INTO student(en, name, branch, phone, city)
VALUES(003, ‘Kabir’, ‘Applied Physics’, 7777777777, ‘Philadelphia’);

插入数据后,数据如下:

1542355024787734.png

更新操作

 用户可以使用UPDATE命令进行更新操作,该语句使用下列关键词:

Where:此关键字将指定数据更新的位置。

Set:此关键字将指定更新的值。

Must:此关键字包含组成主键的列。

此外,在更新行时,如果行不可用,则Cassandra 将创建新行。

更新操作的语法: 

UPDATE <table name>
SET <column name>=<new value>
<column name>=<value>...
WHERE <condition>

示例如下:

cqlsh:keyspace1> UPDATE student SET city=’San Fransisco’
WHERE en=002;

读操作(Read Operation)

读取操作, 用户可以选择读取整个表或单个列。 要从表中读取数据,用户可以使用SELECT语句。 

SELECT * FROM <table name>;

例如:

cqlsh:keyspace1> SELECT * FROM student;

读取选定的列 如下所示:

SELECT <column name1>,<column name2> .... FROM <table name>;

示例如下:

cqlsh:keyspace1> SELECT name,city FROM student;

删除操作

删除操作允许用户从表中删除数据。 用户可以使用DELETE命令进行此操作。

删除操作的语法:

DELETE <identifier> FROM <table name> WHERE <condition>;

如从”student”表中,删除003行;

 cqlsh:keyspace1> DELETE phone FROM student WHERE en = 003;

3. Batch

通过BATCH语句对多个INSERT,UPDATE和DELETE进行分组并且进行Batch 操作,可以在单个语句中执行,语法如下:

batch_statement        ::=  BEGIN [ UNLOGGED | COUNTER ] BATCH
                            [ USING update_parameter ( AND update_parameter )* ]
                            modification_statement ( ';' modification_statement )*
                            APPLY BATCH
modification_statement ::=  insert_statement | update_statement | delete_statement

例如:

BEGIN BATCH
   INSERT INTO users (userid, password, name) VALUES ('user2', 'ch@ngem3b', 'second user');
   UPDATE users SET password = 'ps22dhds' WHERE userid = 'user3';
   INSERT INTO users (userid, password) VALUES ('user4', 'ch@ngem3c');
   DELETE name FROM users WHERE userid = 'user1';
APPLY BATCH;

BATCH语句将多个修改语句(插入/更新和删除)组合到一个语句中。它有几个好处:

在批量处理多个更新时,可以节省客户端和服务器之间的网络往返;

给定分区键的BATCH中的所有更新操作都是隔离执行的;

默认情况下,批处理中的所有操作都会被执行,以确保所有操作要么最终完成,要么不会被完成;

注意:

BATCH语句可能只包含UPDATE,INSERT和DELETE语句(例如,不包含其他Batch处理);

Batch处理不能类同与SQL语言中的事务;

如果未为每个操作指定时间戳,则将应用所有操作使用相同的时间戳;

对单个分区的LOGGED批处理将作为优化转换为UNLOGGED批处理;

UNLOGGED批次

默认情况下,Cassandra使用批处理日志来确保批处理中的所有操作最终完成,或者不会完成。

批处理跨越多个分区时,批处理原子性会受到性能损失。如果不想受到性能的影响,可以使用UNLOGGED选项来跳过批处理日志的处理。如果使用UNLOGGED选项,对于执行失败的Batch ,可能只有部分更新操作执行成功。

Cassandra CRUD操作 – 创建,更新,读取和删除

发表评论

邮箱地址不会被公开。 必填项已用*标注

八十 四 ÷ 28 =

滚动到顶部