文章目录
- 1. 连接与基本操作
- 2. 数据库管理
- 3. 表(Column Family)操作
- 4. 集群管理
- 5. 权限管理
- 6. 其他高级功能
- 7. 条件查询与聚合操作
- 8. 索引管理
- 9. 用户权限和角色管理
- 10. 安全性相关设置
- 11. 一致性级别控制
- 12. 用户定义类型 (UDTs)
- 13. 用户定义函数 (UDFs) 和聚合函数 (UDA)
- 14. 材料化视图 (Materialized Views)
- 15. 备份与恢复
Apache Cassandra 数据库使用 CQL (Cassandra Query Language) 进行交互,以下是一些常用CQL命令的摘要列表。由于篇幅限制,无法提供详尽的“大全”,但可以给出一些基础和常用的命令类别:
1. 连接与基本操作
- 连接到Cassandra节点:
cqlsh [hostname] [port] [username] [password]
例如:
cqlsh localhost 9042
- 显示帮助信息:
help
2. 数据库管理
- 创建Keyspace(数据库空间):
CREATE KEYSPACE IF NOT EXISTS mykeyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
- 选择Keyspace:
USE mykeyspace;
3. 表(Column Family)操作
- 创建表:
CREATE TABLE users (
id uuid PRIMARY KEY,
username text,
email text,
created_at timestamp
);
- 插入数据:
INSERT INTO users (id, username, email, created_at) VALUES (uuid(), 'user1', 'user1@example.com', toTimestamp(now()));
- 查询数据:
SELECT * FROM users WHERE id = 6b5e7cfc-8a12-11ec-bf63-0242ac130003;
- 更新数据:
UPDATE users SET email = 'newemail@example.com' WHERE id = 6b5e7cfc-8a12-11ec-bf63-0242ac130003;
- 删除数据:
DELETE FROM users WHERE id = 6b5e7cfc-8a12-11ec-bf63-0242ac130003;
4. 集群管理
- 列出Keyspaces:
DESCRIBE keyspaces;
- 查看表结构:
DESCRIBE TABLE users;
- 修改表结构:
ALTER TABLE users ADD last_login_time timestamp;
- 删除表:
DROP TABLE users;
- 删除Keyspace:
DROP KEYSPACE mykeyspace;
5. 权限管理
- 创建用户:
CREATE USER user1 WITH PASSWORD 'password';
- 授权:
GRANT SELECT ON ALL KEYSPACES TO user1;
6. 其他高级功能
- 索引创建:
CREATE INDEX ON users (username);
- 批量操作:
BEGIN BATCH
INSERT INTO ...;
UPDATE ...;
APPLY BATCH;
- 时间序列相关的TTL(生存期)设置:
INSERT INTO logs (id, message) VALUES (uuid(), 'log message') USING TTL 3600;
7. 条件查询与聚合操作
- 条件查询:
SELECT * FROM users WHERE username = 'user1' AND email LIKE '%example.com';
- 分页查询:
SELECT * FROM users LIMIT 10 OFFSET 20;
- 聚合函数:
SELECT COUNT(*) FROM users;
或者按字段进行计数:
SELECT COUNT(username) FROM users WHERE created_at > '2020-01-01';
8. 索引管理
- 查看索引:
DESCRIBE INDEXES ON users;
- 删除索引:
DROP INDEX users_by_username;
9. 用户权限和角色管理
- 列出用户权限:
LIST ALL PERMISSIONS OF user1;
- 撤销权限:
REVOKE SELECT ON KEYSPACE mykeyspace FROM user1;
- 创建角色并分配权限:
CREATE ROLE admin WITH LOGIN = true AND SUPERUSER = true;
GRANT ALL PERMISSIONS ON ALL KEYSPACES TO admin;
10. 安全性相关设置
- 更改密码:
ALTER USER user1 WITH PASSWORD 'new_password';
- 禁用或启用用户:
ALTER USER user1 WITH PASSWORD 'password' AND OPTIONS = {'login': 'false'};
11. 一致性级别控制
在Cassandra中,可以为每个查询设置一致性级别以控制读取和写入的保证程度。例如:
CONSISTENCY LEVEL ONE; -- 设置当前会话的一致性级别为ONE(至少一个副本响应)
INSERT INTO users (...) VALUES (...) IF NOT EXISTS; -- 使用当前会话的一致性级别执行插入
12. 用户定义类型 (UDTs)
- 创建用户定义类型:
CREATE TYPE address (
street text,
city text,
zip_code int,
country text
);
- 在表中使用UDT:
CREATE TABLE users (
id uuid PRIMARY KEY,
name text,
addresses map<text, frozen<address>>,
contact_info frozen<address>
);
13. 用户定义函数 (UDFs) 和聚合函数 (UDA)
- 创建用户定义函数:
CREATE FUNCTION concat_ws(separator text, values set<text>)
RETURNS text LANGUAGE java AS '...'; -- 实现函数逻辑的Java代码
SELECT key, concat_ws(',', tokens) FROM mytable;
- 创建用户定义的聚合函数:
CREATE AGGREGATE average(int)
SFUNC avg_update STYPE tuple<int,bigint> INITCOND (0,0);
SELECT key, average(value) FROM mytable GROUP BY key;
14. 材料化视图 (Materialized Views)
- 创建材料化视图:
CREATE MATERIALIZED VIEW user_by_email AS
SELECT * FROM users
WHERE email IS NOT NULL AND id IS NOT NULL
PRIMARY KEY (email, id);
15. 备份与恢复
虽然CQL本身不直接支持备份和恢复,但可以通过驱动程序或工具(如nodetool snapshot
)执行这些操作。
- 创建快照:
nodetool snapshot -t backup_keyspace keyspace_name
- 清理快照:
nodetool clearsnapshot [snapshot-name]
请注意,在实际操作中,可能需要结合其他运维命令、工具及策略来实现更复杂的数据管理任务。对于Cassandra的所有命令以及其具体用法,请查阅官方文档以获取详细信息和最新指南。
python推荐学习汇总连接:
50个开发必备的Python经典脚本(1-10)
50个开发必备的Python经典脚本(11-20)
50个开发必备的Python经典脚本(21-30)
50个开发必备的Python经典脚本(31-40)
50个开发必备的Python经典脚本(41-50)
————————————————
最后我们放松一下眼睛