Cassandra CQL 表:创建、修改和截断示例

的语法 Cassandra 查询语言(CQL)类似于 SQL 语言。
如何在 Cassandra
列族 Cassandra 类似于RDBMS表。列族用于存储数据。
命令“Create Table”用于创建列族 Cassandra.
句法
CREATE TABLE KeyspaceName.TableName ( ColumnName DataType, ColumnName DataType, ColumnName DataType, PRIMARY KEY (ColumnName) ) WITH PropertyName = PropertyValue;
1.主键: 有两种类型 主键.
- 单一主键: 单个主键由以下语法指定。
句法
PRIMARY KEY (ColumnName)
单主键只有一个列,这个列也叫分区键,数据根据这个列进行分区,数据根据分区键分布在不同的节点上。
2.复合主键: 复合主键由以下语法指定。
句法
PRIMARY KEY (ColumnName1, ColumnName2, ...)
在上面的语法中,ColumnName1 是分区键,ColumnName2 是 Clustering key。数据将根据ColumnName1进行分区,数据将根据ColumnName2进行聚类。 Cluster是对分区内的数据进行排序的过程。
3.复合分区键: 复合分区键由以下语法指定。
句法
PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)
在上述语法中,ColumnName1 和 ColumnName2 是复合分区键。数据将基于 ColumnName1 和 ColumnName2 列进行分区,并基于 ColumnName3 进行聚类。如果单个分区上的数据量过大,则可以使用复合分区键。复合分区键用于为数据创建多个分区。
- With 子句
“With 子句”用于为定义的表指定任何属性及其值。例如,如果你想压缩 Cassandra 表格数据。您可以通过在“With 子句”中指定压缩算法属性值来设置压缩属性。该子句还会设置 CLUSTERING ORDER BY 以反转聚簇列的排序方向,并设置 default_time_to_live 以使每行数据自动过期。
例如:
以下是命令“创建表”的执行,它将在键空间“University”中创建表名“Student”。
CREATE TABLE University.Student ( RollNo int, Name text, dept text, PRIMARY KEY (RollNo) );
成功执行“CREATE TABLE”命令后,将在键空间“University”下创建表“Student”,该表包含列RollNo、Name和dept。RollNo是主键,同时也是分区键,因此每个学生都占用一个单独的单行分区。
Cassandra 改变表格
命令“Alter Table”用于删除列、添加新列、更改列名、更改列类型和更改表的属性。
句法
以下是命令‘Alter Table’的语法。
ALTER TABLE KeyspaceName.TableName ADD ColumnName ColumnDataType; ALTER TABLE KeyspaceName.TableName DROP ColumnName; ALTER TABLE KeyspaceName.TableName RENAME ColumnName TO NewColumnName; ALTER TABLE KeyspaceName.TableName WITH PropertyName = PropertyValue;
每份表格均作为单独的声明签发。目前有两项限制。 Cassandra 版本更新:现有列的数据类型将无法再更改,并且 RENAME 仅对主键的聚簇列有效。
例如:
这是命令“Alter Table”的快照,它将在表 Student 中添加新列。
ALTER TABLE University.Student ADD Semester int;
成功执行命令“Alter Table”后,将在表 Student 中添加一个具有“int”数据类型的新列“Semester”。
以下是显示更新后的学生表的屏幕截图。
Cassandra 放置表
命令“Drop table”会删除指定的表及其键空间中的所有数据。删除操作之前,请先执行删除操作。ping 桌子, Cassandra 对数据而不是模式进行快照作为备份。
句法
DROP TABLE IF EXISTS KeyspaceName.TableName;
例如:
这是执行命令“Drop Table”的快照,该命令将从键空间“University”中删除表 Student。
DROP TABLE University.Student;
成功执行命令“Drop Table”后,表 Student 将从键空间 University 中删除。
以下是显示 Cassandra 当尝试访问不存在的学生表时。
Cassandra 截断表
命令“Truncate table”将从指定的表中删除所有数据。在截断数据之前, Cassandra 拍摄数据快照作为备份。
句法
TRUNCATE KeyspaceName.TableName;
例如:
Student 表中有三条记录。这些是表中的记录。
这是执行的命令“Truncate table”的快照,它将从表 Student 中删除所有数据。
成功执行命令“Truncate Table”后,所有数据将从表 Student 中删除。
这是 Student 表中没有记录的数据库状态快照。
截断操作要求所有节点都可达,因为它会同时在整个集群中执行。如果任何节点宕机,该语句将失败,这是为了防止遗留部分数据而特意设置的保护机制。
Drop、Truncate 和 Delete 的区别 Cassandra
三个命令都会删除数据,选错命令要么会破坏模式,要么会留下性能问题。
| 命令 | 它移除了什么 | 保留模式 | Cost |
|---|---|---|---|
| 掉落表 | 所有行和表定义 | 没有 | 成本低廉。SSTable 会被创建快照,然后丢弃。 |
| 截短 | 所有行 | 是 | 价格便宜,但需要所有节点都处于运行状态。不会生成墓碑。 |
| 删除 | 选定的行或列 | 是 | 大规模移除成本高昂。每次移除都会在墓碑上留下“必须跳过,直至压实”的字样。 |
实际操作中,清除整个表时最好使用 TRUNCATE 而不是批量 DELETE,因为成千上万个墓碑标记会减慢后续对该分区的每次读取速度。行级删除将在后续章节中介绍。 CQL插入、更新和删除 教程。








