1. 创建 Keyspace (数据库)
Keyspace 是 Cassandra 中最顶层的命名空间,类似于关系型数据库中的数据库(schema)。每个 keyspace 有自己的复制策略和副本数。
CREATE KEYSPACE IF NOT EXISTS my_keyspace
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
IF NOT EXISTS
: 只在 keyspace 不存在时创建。replication_factor
: 副本因子,表示数据在集群中的副本数量。SimpleStrategy
: 复制策略,适用于单数据中心的集群。
2. 查看 Keyspaces
查看当前 Cassandra 集群中的所有 keyspace。
DESCRIBE KEYSPACES;
或
SHOW KEYSPACES;
3. 使用 Keyspace
在 Cassandra 中执行任何操作之前,首先要选择一个 keyspace(数据库)。
USE my_keyspace;
4. 创建表
创建一个表用于存储数据。你需要定义每一列的数据类型和主键。
CREATE TABLE IF NOT EXISTS my_keyspace.users (
user_id UUID PRIMARY KEY,
first_name TEXT,
last_name TEXT,
email TEXT
);
PRIMARY KEY
: 每个表必须有一个主键,user_id
列在这里是主键。
5. 插入数据
向表中插入数据。插入的数据行需要匹配表的列类型和顺序。
INSERT INTO my_keyspace.users (user_id, first_name, last_name, email)
VALUES (uuid(), 'John', 'Doe', 'john.doe@example.com');
uuid()
: 生成一个唯一的 UUID 作为user_id
。
6. 查询数据
使用 SELECT
查询表中的数据。
SELECT * FROM my_keyspace.users;
SELECT
: 查询所有列的数据。- 如果需要查询特定列,可以只列出需要的列名:
SELECT first_name, last_name FROM my_keyspace.users;
7. 更新数据
更新表中的数据。Cassandra 中的 UPDATE
是基于行的,不会更新表中的每个列,只有指定的列才会被更新。
UPDATE my_keyspace.users
SET email = 'newemail@example.com'
WHERE user_id = <some-uuid>;
WHERE
子句指定了主键,用于定位要更新的行。
8. 删除数据
删除表中的数据。删除行时,你需要通过主键来指定要删除的行。
DELETE FROM my_keyspace.users WHERE user_id = <some-uuid>;
9. 删除表
如果不再需要某个表,可以删除它。
DROP TABLE IF EXISTS my_keyspace.users;
10. 删除 Keyspace
如果不再需要某个 keyspace,可以删除它。
DROP KEYSPACE IF EXISTS my_keyspace;
11. 查看表结构
查看某个表的结构(列名和数据类型)。
DESCRIBE TABLE my_keyspace.users;
12. 查看数据
查看表中的某一部分数据,使用 LIMIT
限制返回的行数。
SELECT * FROM my_keyspace.users LIMIT 10;
13. 创建索引
在列上创建索引以提高查询效率。
CREATE INDEX ON my_keyspace.users (email);
14. 数据导出与导入
-
导出数据:你可以使用
COPY
命令将表的数据导出为 CSV 文件。COPY my_keyspace.users TO 'users.csv';
-
导入数据:你也可以使用
COPY
命令从 CSV 文件导入数据。COPY my_keyspace.users FROM 'users.csv';
总结
- Keyspace 是 Cassandra 中的数据库,包含表和数据。
- 表 用于存储数据,必须定义列及主键。
- CQL(Cassandra Query Language) 是与 Cassandra 交互的查询语言,类似于 SQL。