Cassandra的数据模型的理解

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};

来源: http://www.flyml.net/2016/09/04/cassandra-tutorial-data-model/

(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/glossary/doc/glossary/gloss_partition_key.html

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/

时间: 2024-10-10 13:01:19

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

[原创]Cassandra的基本数据模型之自底向上

一 简介 对于那些习惯了关系型数据库的人来说,学习Cassandra有一定的困难.Cassandra有很多新的术语,与关系型DB中的术语既类似但本质上又不相同.这里我们主要从两个角度来学习Cassandra的数据模型:自底向上和自顶向下. 二 自底向上理解Cassandra的数据模型 Cassandra被归类于NoSQL数据库,其根本原因在于它的设计不像关系型DB那样需要预告定义属性列.Cassandra是按列进行存储的,通常我们可以想像为以下这种模型: 但是使用这种数据模型来存储数据之后,如果

[原创]Cassandra的基本数据模型之自顶向下

一 序言 在前面的文章中,我简单地讲述了一下在windows平台上cassandra的安装与启动,并以自底向上的视角来讲述了cassandra的基本数据模型.在我学习一个新的事物之前,我认为最好的方法就是先在宏观上了解一下这个事物,然后再从细节上着手.本篇文章就从自顶向下的视角来分析cassandra的数据模型. 二 集群的概念 Cassandra在设计之初就考虑到了跨越多台主机共同工作,对用户呈现一个整体的分布式系统架构的需求.所以,应此需求而生的就是Cassandra的最外层结构是集群(Cl

Cassandra数据模型

Cassandra是一个开源的分布式数据库,面向列的特点,可以将Cassandra的数据模型想象成一个多维的Hash. 高度可扩展性和高度可用性,没有单点故障 NoSQL 列族实现 非常高的写入吞吐量和良好的读取吞吐量 类似 SQL 的查询语言(从 0.8 起),并通过二级索引支持搜索 可调节的一致性和对复制的支持 灵活的模式 数据模型: column  ,  supercolumn  ,   columnfamily  ,   keyspace COLUMN Column是Cassandra中

Cassandra 数据模型

Cassandra的数据模型类似于关系型数据库的模型,且提供了与SQL语言非常类似的CQL语言进行操作. 但是Cassandra的数据模型类似于多层键值对结构,与关系型数据库存在巨大差别. 本文基于: [cqlsh 5.0.1 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4] 目录: 多层KV结构 查询 排序 聚合 ALLOW FILTERING 次级索引 多层KV结构 Cassandra 的数据模型由 keyspace (类似关

Cassandra 和 Spark 数据处理一窥

关于Linux的学习,请参考书籍<Linux就该这么学> Apache Cassandra数据库近来引起了很多的兴趣,这主要源于现代云端软件对于可用性及性能方面的要求.那么,Apache Cassandra 是什么?它是一种为高可用性及线性可扩展性优化的分布式的联机交易处理 (OLTP) 数据库 具体说到 Cassandra 的用途时,可以想想你希望贴近用户的系统,比如说让我们的用户进行交互的系统.需要保证实时可用的程序等等,如:产品目录,物联网,医疗系统,以及移动应用.对这些程序而言,下线时

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

Hbase总结(一)-hbase命令 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N' 添加记录 put '表名称', '行名称', '列名称:', '值' 查看记录 get '表名称', '行名称' 查看表中的记录总数 count  '表名称' 删除记录 delete  '表名' ,'行名称' , '列名称' 删除一张表 先要屏蔽该表,才能对

Cassandra的数据存储结构

Cassandra 的数据模型是基于列族(Column Family)的四维或五维模型.它借鉴了 Amazon 的 Dynamo 和 Google's Big Table 的数据结构和功能特点,采用Memtable的方式进行存储.在 Cassandra 写入数据之前,需要先记录日志 ( Commitlog),然后数据开始写入到 Column Family 对应的 Memtable 中,Memtable 是一种按照 key 排序数据的内存结构,在满足一定条件时,再把 Memtable 的数据批量的

分布式 Key-Value 存储系统:Cassandra 入门

Apache Cassandra 是一套开源分布式 Key-Value 存储系统.它最初由 Facebook 开发,用于储存特别大的数据. Cassandra 不是一个数据库,它是一个混合型的非关系的数据库,类似于 Google 的 BigTable.本文主要从以下五个方面来介绍 Cassandra:Cassandra 的数据模型.安装和配制 Cassandra.常用编程语言使用 Cassandra 来存储数据.Cassandra 集群搭建. 在 IBM Bluemix 云平台上开发并部署您的下

ubuntu环境下cassandra安装配置

1.cassandra简介 Apache Cassandra 是一套开源分布式 Key-Value 存储系统.它最初由 Facebook 开发,用于储存特别大的数据. Cassandra 不是一个数据库,它是一个混合型的非关系的数据库,类似于 Google 的 BigTable.本文主要从以下五个方面来介绍 Cassandra:Cassandra 的数据模型.安装和配制 Cassandra.常用编程语言使用 Cassandra 来存储数据.Cassandra 集群搭建. 2.配置环境 ubunt