参考文档 https://www.cnblogs.com/youzhibing/p/6549960.html 基础概念
https://blog.csdn.net/zuishengmengsi1990/article/details/51145353
https://blog.csdn.net/maobois/article/details/52535630 集群配置
https://blog.csdn.net/zhuwinmin/article/details/76066642 问题记录
https://blog.csdn.net/zhuwinmin/article/details/76063203 Cassandra nodetool常用操作
https://www.w3cschool.cn/cassandra/cassandra_alter_table.html cassandra处理sql
-
一个Cassandra集群中常常包含着以下一系列组成:结点(Node),数据中心(Data Center)以及集群(Cluster)。
-
Cassandra 的存储抽象结构和数据库一样,keyspace对应关系数据库的database或schema,column family对应于table。
-
Cassandra使用点对点通讯协议gossip在集群中的节点间交换位置和状态信息。
-
存储结构:
CREATE TABLE mykeyspace.mytable (
key1 text,
key2 text,
key3 text,
column1 bigint,
column2 int,
column3 timestamp,
PRIMARY KEY (key1, key2, key3);
)
key1: partitionKey,分区主键
key2, key3 clusterKey,集群主键 -
基本操作
查询全部的keyspace:describe keyspaces;(或desc keyspaces;)
创建一个keyspace:CREATE KEYSPACE IF NOT EXISTS myCas WITH REPLICATION = {‘class’: ‘SimpleStrategy’,‘replication_factor’:1};(副本配置策略,复制因子) -
BATCH批量操作
BEGIN BATCH
insert into user(userid,password,name) values (‘1’,‘ana123’,‘ana’);
update user set password=‘ana111’ where userid=‘1’;
APPLY BATCH; -
操作注意
关于SELECT的几个知识点:
a. 可以使用COUNT计数函数,这是SQL中唯一一个可以用的函数
b. 可以使用LIMIT关键字限制数量
c. 在WHERE中出现的列名必须是PRIMARY KEY中指定的第一个列名,或者PRIMARY KEY中其他位置使用CREATE INDEX建立了索引的列名;如果不建立索引,也可以在结尾加上ALLOW FILTERING这个关键字,通常PRIMARY KEY中指定的第一个列名也叫做PARTITION KEY,它对数据在节点上的分布起到了重要作用
d. WHERE 中对于类型为set\list的列可以使用CONTAINS关键字,对于类型为map的列可以使用CONTAINS KEY关键字,对于PRIMARY KEY中的(最后 ???)第一个列 (???) 可以使用IN关键字
e. 集合类型不能用为PRIMARY KEY,但是可以CREATE INDEX
f. cassandra查询有很多限制,比如只能单表查询,不支持联表查询和子查询,查询条件只支持key查询和索引列查询,而且key有顺序的限制;
更新与删除只支持按主键进行,意思是where关键字后面必须携带主键字段;
创建联合主键,联合主键 primary key 的非第一个位置不能 用 where,对非第一个位置使用 ALLOW FILTERING。 -
.数据复制和分发
Cassandra中分发、复制同时进行。Cassandra被设计为点对点系统,会创建数据的多个副本存储在集群中的一组节点中。Cassandra中数据被组织为表,由primary key标识,primary key决定数据将被存储在哪个节点。 -
.Partitioner
在Cassandra中,table的每行由唯一的primarykey标识,partitioner实际上为一hash函数用以计算primary key的token。Cassandra依据这个token值在集群中放置对应的行。
9042(默认的CQL本地服务端口)、9160(默认的Cassandra服务端口)、7000(Cassand集群内节点间通讯端口)、7199端口(Cassandra JMX 监控端口)
在bin目录下使用./nodetool status 查看集群信息