美文网首页
Cassandra学习笔记

Cassandra学习笔记

作者: lew1sss | 来源:发表于2020-02-23 01:44 被阅读0次

    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学习笔记

          本文链接:https://www.haomeiwen.com/subject/zgldqhtx.html