Cassandra--概述与相关介绍

  Apache Cassandra是一套开源分布式NoSQL数据库系统,Facebook于2008开源,目前最新版本3.11.1架构设计主要由亚马逊的Dynamo与Google 的BigTable两部分组成

介绍

Cassandra相关概念

  • Cassandra 每个节点都是独立的,都可以接受读取和写入请求

    Cluster:逻辑上的概念,其实就是多个节点Node(无中心),可以跨数据中心。
    DataCenter :数据中心,可以理解为是一个机房,包含多个Rack
    Rack : 机架,机架上包含多个节点Node
    Node : 节点,可以理解为机器
    提交日志 : 提交日志,是Cassandra中的崩溃恢复机制。每个写操作都写入提交日志。
    Mem-表 : mem-表,内存中的的数据结构。提交日志后,数据将被写入mem表。有时,对于单列族,将有多个mem表。
    SSTable : 它是一个磁盘文件,当其内容达到阈值时,数据从mem表中刷到磁盘。

键空间KeySpace

  • keyspace类是于SQL的数据库database,但也有些不同,cassandra它还定义了数据的复制策略(副本放置策略和所需副本的数量)
    创建keysace的时候可以指定两个属性:replication和durable_writes
    1
    2
    3
    create KEYSPACE keyspaceName WITH replication = {'class': 'SimpleStrategy','replication_factor':3}
    create KEYSPACE keyspaceName WITH replication={'class': 'NetworkTopologyStrategy','datacenter1':2}
    ... AND DURABLE_WRITES = false;

Replication 副本

Replication:副本位置策略与副本的数量即存储数据到多个节点来保证可靠性和出错容忍性

副本数量

也叫副本因子,这个就是决定有多少份副本,比如如果设置为1,则表示每一行只有一个副本,所有的副本地位都是相等的(和kafka类似)。

副本放置策略

表示该keyspace的副本如何放置在集群中,keyspace有两种策略:SimpleStrategyNetworkTopologyStrategy

  1. SimpleStrategy 简单策略
    默认副本放置策略,该模式下需要指定复制策略和副本因子,如下面指定2份副本:

    1
    create KEYSPACE demodb WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 2};
  2. NetworkTopologyStrategy 网络拓扑策略
    这种策略用于当你知道节点如何在数据中心(Data Center)分组的情况或者你希望部署集群横跨多个数据中心,此时你必须指定每个数据中心要多少个副本。在这种情况下,副本放置策略由数据中心自己决定
    创建代码如下:

    1
    CREATE KEYSPACE demodb WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'dc1' :3 };

列族(Column Families)

  • 列族是列的容器
  • Cassandra 数据模型包括列、行、列族和间空间 (keyspace)
    列族(Column Families)
  1. :Cassandra 数据模型中最基本的单元,每一个列包括一个名称、一个值和一个时间戳。
    (例如 name=”zhangsan”,暂忽略时间戳)。

  2. :用一个名称标记的列的集合,可以把这个列名称叫做行键(rowKey)
    (例如 “rowName”->{id=”34”,name=”zhangsan”,age=”25”})
    cassandra节点中,存储了每一行数据,按照行键排序,更具这种排序,我们就可以通过切片查询

  3. 列族:用一个名称标记的行的集合
    (例如 famliyName->{“rowName1”->{id=16,name=”zs”},”rowName1”->{id=17,name=”ls”)

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器