Cassandra基础(2)—— Cassandra使用及其数据
2018-12-25 本文已影响51人
黄宝玲_1003
Cassandra基础(1)—— Casasndra集群搭建
Cassandra基础(2)—— Casasndra使用及其数据类型
本文参考Cassandra教程,重点梳理使用Cassandra的一些常用过程,一些细节请自行参看文档。
登陆
登陆Casandra有2种方式:(下面涉及到一些上一章集群搭建提到的知识)
// 1、在本地终端安装单节点的Cassandra,即有了一个可以使用cqlsh指令的客户端。运行指令:
cqlsh 192.168.8.110 -u casandra -p cassandra //默认用户是Cassandra,如果自己设置了超级用户就把用户名和密码改成相应的即可。
// 2、如果是运行的docker容器,也可以直接进入容器内部,然后输入命令cqlsh,再回车。就进入了Cassandra。
键空间操作
keyspace相当于mysql中的datastore。
// 第一次使用需要创建键空间
CREATE KEYSPACE mydatastore WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3}; //策略和复制因子是用于数据恢复了,感兴趣可以去了解,一般使用简单策略,复制因子数为节点数
// 键空间建好后就可以直接进入了
use mydatastore; //注意Cassandra指令都是以分号;结尾
// 其他的操作也和mysql指令类似
// 修改键空间
ALTER KEYSPACE “KeySpace Name” WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of replicas’};
// 删除键空间
DROP KEYSPACE “KeySpace name”;
表操作
// 创建表
CREATE TABLE data (
device_id text,
create_time timestamp,
id uuid,
data_name text,
data_type text,
data_value_bool Boolean,
data_value_bytes blob,
data_value_double double,
data_value_int int,
datat_value_string text,
PRIMARY KEY (device_id, create_time, id)
) WITH CLUSTERING ORDER BY (create_time DESC);
// 修改表
ALTER TABLE table data ADD new column datatype;
ALTER table data DROP column data_type;
// 删除表
DROP TABLE data;
Cassandra创建表有几个需要注意的点:主键、数据类型、排序。
主键
主键(由分区键和集群键组成):唯一标识一条记录。
分区键:分区键的哈希值决定该条数据落在哪片物理分区上。
集群键:用于对分区中的记录进行排序,默认升序。
上述例子中:
PRIMARY KEY (device_id, create_time, id) // device_id是分区键,(create_time, id)是集群键。
//分区键也可以有多个:
PRIMARY KEY((k_part_one,k_part_two), k_clust_one, k_clust_two, k_clust_three) // 第一部分(k_part_one,k_part_two)是分区键,k_clust_one, k_clust_two, k_clust_three是集群键。
数据类型
下表是Casandra的数据类型:
数据类型 | 常量 | 描述 |
---|---|---|
ascii | strings | 表示ASCII字符串 |
bigint | bigint | 表示64位有符号长 |
blob | blobs | 表示任意字节 |
Boolean | booleans | 表示true或false |
counter | integers | 表示计数器列 |
decimal | integers, floats | 表示变量精度十进制 |
double | integers | 表示64位IEEE-754浮点 |
float | integers, floats | 表示32位IEEE-754浮点 |
inet | strings | 表示一个IP地址,IPv4或IPv6 |
int | integers | 表示32位有符号整数 |
text | strings | 表示UTF8编码的字符串 |
timestamp | integers, strings | 表示时间戳 |
timeuuid | uuids | 表示类型1 UUID |
uuid | uuids | 表示类型1或类型4 |
UUID | ||
varchar | strings | 表示uTF8编码的字符串 |
varint | integers | 表示任意精度整数 |
排序
最后一句 WITH CLUSTERING ORDER BY (create_time DESC); 决定了分区的升降序,升序是ASC,降序是DESC。