当前课程知识点:大数据系统基础 > 6. NoSQL > 授课视频 > 数据模型、接口、语言
下面我们来学习
Cassandra的数据模型
接口和访问语言
Cassandra的数据模型
借鉴了谷歌Bigtable的设计
包括四个概念
键空间即Keyspace
相当于关系数据模型当中的
数据库
是最上层的命名空间
列族ColumnFamily
相当于关系数据库中的表
但它比表更稀疏
行Row表示一个数据对象
存在于ColumnFamily当中
列Column相当于属性
是存储的基本单元
Cassandra的主要概念之间的
包含关系如图所示
其中Keyapace中的settings
主要设置副本数量Hash策略等
columnfamily中的settings
主要设置key缓存 读修复的概率
列的排序方式等属性
Column是Cassandra存储的基本单元
它是一个三元组
一般情况下
它不支持基于列值的查询
而在1.1版以后
Cassandra对它的Column
扩展了一个新的属性即TTL
Cassandra中的行有很多列组成
但是注意
同一个列族内不同行的属性数量
可以不同
转化为关系表时会出现空值
列族由行组成
图中这个列族
包括两行数据
第一行包括三列
第二行包括四列
列族中的列
就像儿童的玩具拼插积木
用户可以通过制定
新的三元组名字来动态增加
另外注意在一个列族中的某一行
它的值是根据键值来排序的
这个特性很好地支持了
后面讲到的Cassandra数据
在不同节点上的Hash分布
键空间是列族的容器
一般情况下
一个应用程序只有一个键空间
在这个键空间中
可以包含多个列族
从前面的介绍可以知道
Cassandra系统中
键空间 列族 行和列
与关系模型中的数据库
表 行 列具有较好的对应关系
但是Cassandra模型中的列
可以动态增加
因此更适合弱结构化数据
也就是说
这些数据的模式更加灵活
另外关系模型当中的表
就是一个规整的二维数组
而Cassandra系统当中的列族
本质上是一个嵌套的
键值对的集合
作为NoSQL运动的代表
Cassandra最早
为用户提供了是一个
Thrift框架的API
它包括读操作 写操作
和其它操作三个部分
这要求用户对编程语言
具有较好的知识基础
随着Cassandra应用的进程
用户希望
提高在Cassandra上的编成效率
这时人们发现
简单的丢弃SQL语言是不明智的
因此NoSQL阵营明确提出了
Not only SQL这样的口号
2011年Cassandra
也发布了自己的结构化查询语言
Cassandra CQL 1.0beta版
目前Cassandra
推出了CQL3.1.7版的
Cassandra
为什么要回归SQL语言
主要是因为Thrift的接口
直接暴露了系统的内部存储结构
系统升级后
需要修改相关的应用程序
2011年9月发布的CQL2版本
相对简陋
几乎和Thrift接口一一对应
不支持面向行的操作
和复合类型访问
而最新的CQL3通过采用复合类型
将KV存储映射到一个
更自然的行和列的表示方法
如右图所示
CQL3能够以关系表的形式
返回给用户
查询结果看起来更像关系表了
这里我们给出了CQL3的应用示例
大家看它的语法和语意
基本上符合SQL标准的约定
这里包括创建 使用
和显示键空间
创建列族
以及数据的增 删 改 查等操作
-授课视频
--什么是大数据
--大数据典型应用
--大数据的特点
--大数据技术体系
--大数据生态系统
--大数据技术挑战
--课程内容
-1. 绪论--Quiz 1
-授课视频
--2.2并行化理念
--2.9计算虚拟化
-2.云计算--Quiz 2
-授课视频
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-3.文件存储--Quiz3
-授课视频
--4.13类似框架
--4.14章节总结
-4. 处理框架--Quiz4
-授课视频
-5.内存计算--Quiz5
-授课视频
--数据副本及一致性
--节点本地数据存储
-6. NoSQL--Quiz6
-授课视屏
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-7. 流计算--Quiz7