Cassandra学习笔记

Cassandra

简介

以Amazon Dynamo为最初的模仿对象,结合Google Big Table基于列族的数据模型,NoSQL产品;

Cassandra集群是无中心化结构,每个一个节点的角色几乎相同,不过有“种子服务器”的概念(当一个新的节点加入集群,需要寻找种子服务器)。即使一个节点宕机也能正常运作整个集群,缺点是性能差(信息交流付出代价大)。集群高可用、支持热替换故障节点,支持多数据中心,可调节一致性(参数控制);


安装过程


数据模型

列族(集合):

实例:

超级列族:


从顶向下描述Cassandra模型

1. 集群(cluster)

2.Keyspaces

集群是Keyspace的容器;

Keyspace是数据的最外层容器(类似Oracle的表空间Table Space概念);

System Keyspcae(系统运作用到的数据使用和维护);

副本因子(当建立了Keyspace后可以指定副本因子,当存放数据时,这段数据会复制多少份到多少个节点,可用空间减少,数据安全性提高);

副本放置策略(在不同的服务器中、不同机房等如果放置副本);

3.列族和列

Keyspace是列族的容器,列族类似于Oracle中的表;

列族需要在Keyspace中预先定义;

列族选项;

列是最基本的数据结构单元,列是不预先定义,可以每一行都不一样;

列数据结构:

超级列:

例子:

指定一个超级列时的层级:


基本语法

create keyspace test;//  创建Keyspcae
show keyspaces;//  展示所创建的Keyspace
use test;//  使用test这Keyspace
create column family users;//  创建名为users的列族
show schema;//  展示当前Keyspace有哪些模式
drop column family users;//  删除列族
create column family users
 with column_type = 'Stendard'
 and comparator = 'UTF8Type'
 and defualt_validation_class = 'UTF8Type'
 and key_validation_class = 'UTF8Type'//  创建名为users的列族及定义
set users[lew1sss][age]=18 // 插入列族users一个行 行为lew1sss 列为age=8
get users[lew1sss]//  查询列族users的lew1sss行
list users;//  列出列族所有的行

与关系型数据库的设计差别

很弱的查询语言(使用cqlsh支持类似sql语法的shell);

不支持表间连接;

没有外键的概念;

第二索引;

排序也是设计策略;

反范式化设计;


场景应用

  • 关系型数据库建模
  • Cassandra建模

集群安装


集群机制

一致性哈希(控制数据分布在哪些节点)

image-20200223011648804.png

Gossip协议

用于在环内节点之间传播状态信息;

周期运行,每次在环中随机挑选一个对象节点,发起会话;

每次绘画传送三条消息;

Phi增量故障监测算法;

Snitch

复制策略


Cassandra的数据存储

你可能感兴趣的:(Cassandra学习笔记)