cassandra基础知识整理

参考文档 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

  1. 一个Cassandra集群中常常包含着以下一系列组成:结点(Node),数据中心(Data Center)以及集群(Cluster)。

  2. Cassandra 的存储抽象结构和数据库一样,keyspace对应关系数据库的database或schema,column family对应于table。

  3. Cassandra使用点对点通讯协议gossip在集群中的节点间交换位置和状态信息。

  4. 存储结构:
     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,集群主键

  5. 基本操作
    查询全部的keyspace:describe keyspaces;(或desc keyspaces;)
    创建一个keyspace:CREATE KEYSPACE IF NOT EXISTS myCas WITH REPLICATION = {‘class’: ‘SimpleStrategy’,‘replication_factor’:1};(副本配置策略,复制因子)

  6. BATCH批量操作
    BEGIN BATCH
    insert into user(userid,password,name) values (‘1’,‘ana123’,‘ana’);
    update user set password=‘ana111’ where userid=‘1’;
    APPLY BATCH;

  7. 操作注意
    关于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。

  8. .数据复制和分发
    Cassandra中分发、复制同时进行。Cassandra被设计为点对点系统,会创建数据的多个副本存储在集群中的一组节点中。Cassandra中数据被组织为表,由primary key标识,primary key决定数据将被存储在哪个节点。

  9. .Partitioner
    在Cassandra中,table的每行由唯一的primarykey标识,partitioner实际上为一hash函数用以计算primary key的token。Cassandra依据这个token值在集群中放置对应的行。


9042(默认的CQL本地服务端口)、9160(默认的Cassandra服务端口)、7000(Cassand集群内节点间通讯端口)、7199端口(Cassandra JMX 监控端口)

在bin目录下使用./nodetool status 查看集群信息

猜你喜欢

转载自blog.csdn.net/qq_35331140/article/details/86512243