学习 Cassandra(三):CQL

CQL(Cassandra Query Language)是 Casssandra 提供的类 SQL 查询语言

通过以下命令进入 CQL 交互查询界面:

bin/cqlsh <rpc_address>:<9094>  

显示帮助信息:

help;  

keyspace

显示全部 keyspace:

DESCRIBE KEYSPACES;  

system_schema system_auth system system_distributed system_traces

创建 keyspace:

CREATE KEYSPACE dyingbleed WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3}  

创建了一个名为 dyingbleed 的 keyspace,并指定副本策略为 SimpleStrategy,副本数为 3

副本策略有两种:

  • SimpleStrategy 根据相邻节点的副本策略
  • NetworkTopologyStrategy 根据网络拓扑的副本策略

切换到 keyspace:

USE <KEYSPACE_NAME>;  

显示 keyspace 下的 table:

DESCRIBE TABLES;  

DDL

创建交易信息表:

CREATE TABLE trans (  
    id int,
    user_id int,
    store_id int,
    amount decimal,
    trans_date date,
    PRIMARY KEY (id, trans_date)
) WITH CLUSTERING ORDER BY (trans_date DESC)

主键

主键由两部分组成:

  • partition key 相同 partition key 的数据被分配在同一个分区,相同的分区存储在同一个副本节点
  • clustering column 定义了该表分区的分群(clustering)顺序

排序

CQL 不支持 ORDER BY 排序,只能在建表指定 CLUSTERING ORDER BY 且之后无法修改

增加一列:

alter table trans add state text  

删除表:

drop table trans  

创建二级索引:

create index on trans (user_id)  

参考:http://cassandra.apache.org/doc/latest/cql/ddl.html

DML

查询交易信息:

select * from trans  

参考:http://cassandra.apache.org/doc/latest/cql/index.html