Cassandra属于NoSQL数据库,NoSQL和传统关系型数据库不同,NOSQL偏好数据冗余,因为NoSQL一般无法做表关联查询。

(1) keySpace

基本上可以将Keyspace 理解成MySQL 之中的Database. 只不过Cassandra的”database” 包含了更多的内容:

  • Replication Factor : 复制因数。 表示一份数据在一个DC 之中包含几份。常用奇数~ 比如我们项目组设置的replication_factor=3
  • Replica placement strategy : 复制策略。 默认的是SimpleStrategy. 如果是单机架、单数据中心的模式,保持使用SimpleStrtegy即可。

下面是一个简单的通过CQL 语句创建一个新的keyspace的例子:

MySQL

1
2
CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};

(2) Column Family/Column
         可以理解Column Family为MySQL的Table, 将Column 理解为MySQL之中的一条记录。所谓Column就是: A tuple with name, value and timestamp。之所以称之为Column Family, 是因为Cassandra 是一种列式数据库,因此将一组Column称为Column Family。.
      比较有意思的是,Column 包含了Timestamp。 其作用主要是当有新数据覆盖的时候,不是直接将老数据从存储介质上删除,而是直接写入新的数据。 当需要查询的时候,通过key或者某种方式找到的所有Column,并去找Timestamp 最新的Column。 老数据会在一段时间之后自行删除。

可以使用下面的一句话概括:

Java

1
Map<RowKey, SortedMap<ColumnKey, ColumnValue>>

首先Map结构,通过key来进行查询速度会非常快。 再加上内嵌的SortedMap, 可以进行顺序查找,速度也很快。 当然,如何快速的生成Key等就是另外一个topic

Cassandra 整体数据可以理解成一个巨大的嵌套的Map。只能按顺序一层一层的深入,不能跳过中间某一层~


 

(3)Super Column
   已经被淘汰,可以不用关注

(4)Primary key
       Primary key = Partition Key  + [Clustering Key] 

(5)Partition Key
   其实就是指在Primary key 中的第一个列,如果想要用多个列就可以把这的多个列用小括号括起来。
    http://docs.datastax.com/en/cql/3.1/cql/cql_reference/refCompositePk.html 这里有一个例子,说的很清楚。 


参考资料:
1)Data Modeling Concepts,http://docs.datastax.com/en/cql/3.1/cql/ddl/dataModelingApproach.html  
2)Data modeling in 30 seconds  http://docs.datastax.com/en/landing_page/doc/landing_page/dataModeling.html  
3)[Cassandra教程] (四)使用Key的正确姿势,http://www.flyml.net/2016/09/05/cassandra-tutorial-right-way-to-use-key/  

Cassandra的数据模型的理解的更多相关文章

  1. Cassandra的数据模型

    Cassandra的数据模型可以理解为嵌套的Map,在Cassandra中数据类型主要有四种:Column,SuperColumn,ColumnFamily,Keyspace.下面分别介绍这几种类型. ...

  2. Cassandra key说明——Cassandra 整体数据可以理解成一个巨大的嵌套的Map Map<RowKey, SortedMap<ColumnKey, ColumnValue>>

    Cassandra之中一共包含下面5种Key: Primary Key Partition Key Composite Key Compound Key Clustering Key 首先,Prima ...

  3. Cassandra 数据模型

    Cassandra的数据模型类似于关系型数据库的模型,且提供了与SQL语言非常类似的CQL语言进行操作. 但是Cassandra的数据模型类似于多层键值对结构,与关系型数据库存在巨大差别. 本文基于: ...

  4. Cassandra 介绍

    cassandra是一种NoSQL数据库,No是指No Relational.cassandra的数据模型结合了Dynamo的key/value和BigTable  的面向列的特点,主要被设计为存储大 ...

  5. Hbase总结(一)-hbase命令,hbase安装,与Hive的区别,与传统数据库的区别,Hbase数据模型

    Hbase总结(一)-hbase命令 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', ...

  6. Cassandra 和 Spark 数据处理一窥

    Apache Cassandra 数据库近来引起了很多的兴趣,这主要源于现代云端软件对于可用性及性能方面的要求. 那么,Apache Cassandra 是什么?它是一种为高可用性及线性可扩展性优化的 ...

  7. Cassandra 的数据存储结构——本质是SortedMap<RowKey, SortedMap<ColumnKey, ColumnValue>>

    Cassandra 的数据存储结构 Cassandra 的数据模型是基于列族(Column Family)的四维或五维模型.它借鉴了 Amazon 的 Dynamo 和 Google's BigTab ...

  8. Cassandra学习六 一些知识点

    http://www.flyml.net/2016/09/08/cassandra-tutorial-java-api-example/ Cassandra对查询的支持很弱,只支持主键列及索引列的查询 ...

  9. Cassandra数据建模

    1.  概述 Apache Cassandra将数据存储在表中,每个表都由行和列组成.CQL(Cassandra查询语言)用于查询存储在表中的数据.Apache Cassandra数据模型基于查询并针 ...

随机推荐

  1. flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询

    一对多,多对多是什么? 一对多.例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级. 多对多.例如,学生与课程,可以有多个学生修同一门课,同时,一门课也有很多学生. 一对多查询 如果一个 ...

  2. Java集合(Collection)综述

    1.集合简介 数学定义:一般地,我们把研究对象统称为元素.把一些元素组成的总体叫做集合. java集合定义:集合就是一个放数据的容器,准确的说是放数据对象引用的容器. java中通用集合类存放于jav ...

  3. ThinkPHP中where()使用方法详解

    where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询.表达式查询.快捷查询.区间查询.组合查询在内的查询操作.where方法 ...

  4. linux常用软件安装,常用命令

    jdk [root@localhost]# tar -zxvf jdk-8u144-linux-x64.tar.gz [root@localhost]# vi /etc/profile 在profil ...

  5. Java_myeclipse添加DTD约束(框架xml只能提示功能)

    以struts2中的xml为例 struts-2.3.4-all\struts-2.3.4\src\core\src\main\resources

  6. 《LINQ技术详解C#》-4.LINQ到对象

    public static string[] Presidents { get; } = { "Adams", "Arthur", "Buchanan ...

  7. Kibana加载样本数据

    kibana 6.2 加载样本数据 kibana loading sample data 下载样本数据 # 莎士比亚经典作品 wget https://download.elastic.co/demo ...

  8. SpringBank 开发日志 Mybatis 使用redis 作为二级缓存时,无法通过cacheEnabled=false 将其关闭

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...

  9. Journal of BitcoinJ 从clone开始

    启动Powershell cd D:\workspace mkdir BitcoinJ git init

  10. day--16页面布局

        后台页面布局 一.fixed布局 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...