大数据技术原理与应用(第五章 NoSQL数据库)

NoSQL数据库
摘要由CSDN通过智能技术生成

目录

5.1 NoSQL数据库

Not only SQL特点

传统的关系型数据库特点

MySQL集群方式的缺陷

5.2 NoSQL与关系型数据库的比较

数据库原理

数据规模

数据库模式

查询效率

事务一致性

数据完整性

可用性

标准化

技术支持

可维护性

5.3 四大类型NoSQL数据库

键值数据库

数据模型

典型应用

优缺点

不适用情形

列族数据库

数据模型——列族

典型应用

优缺点

不适用情形

文档数据库

数据模型

典型应用

优缺点

不适用情形

图数据库

数据模型——图结构

典型应用

优缺点

不适用情形

5.4 NoSQL数据库的理论基石

CAP

Consistency一致性

Availability可用性

Partition tolerance分区容忍性

CA:强调一致性(C)和可用性(A),放弃分区容忍性(P)

CP:强调一致性(C)和分区容忍性(P),放弃可用性(A)

AP:强调可用性(A)和分区容忍性(P),放弃一致性(C)

BASE

BA(Basically Availble):基本可用

S(Soft-state):软状态

E(Eventual consistency):最终一致性

关系型数据库事务的ACID性质

A(Atomicity):原子性

C(Consistency):一致性

I(Isolation):隔离性

D(Durability):持久性

最终一致性

因果一致性

“读己之所写”一致性

单调读一致性

会话一致性

单调写一致性

当W+R>N时,保证强一致性

当W+R≤N时,弱一致性

5.5 从NoSQL到NewSQL

数据库的发展

应用场景

NewSQL数据库

关系数据库、NoSQL、NewSQL数据库产品分类图

5.6 文档数据库MongoDB

MangoDB特点

MangoDB的概念术语与关系型数据库比较

MangoDB数据类型


5.1 NoSQL数据库

Not only SQL特点

灵活的可拓展性(相比关系型数据库可以进行水平扩展)

灵活的数据模型(关系型数据库行列遵循严格的关系代数关系,NoSQL则没有严格的模型规范)

和云计算紧密结合

传统的关系型数据库特点

具有非常完备的关系理论基础;具有事务性机制的支持;具有高效的查询优化机制。

无法满足海量数据的管理需求;无法满足高并发的需求;无法满足高可扩展性和高可用性的需求。

MySQL集群方式的缺陷

复杂性,整个集群部署管理配置都非常复杂。

延迟性,主机数据的复制一般采用异步方式,当主库压力较大时,就会带来较大的延迟。

扩容问题,整个集群压力过大时,需要增加新机器对整个数据集进行重新分区,非常复杂。

5.2 NoSQL与关系型数据库的比较

数据库原理

关系型数据库:具有完备的关系代数理论作为基础。

NoSQL数据库:没有统一的理论基础,各有规范。

数据规模

关系型数据库:很难实现横向扩展,纵向扩展非常有限。

NoSQL数据库:具有非常好的水平可扩展性。

数据库模式

关系型数据库:要定义严格的数据库模式,且严格遵守事先定义的数据库模式。

NoSQL数据库:数据模型非常灵活,可以存储不同类型的数据。

查询效率

关系型数据库:适当数据量级查询效率高,数据量级增大查询效率下降。

NoSQL数据库:未构建起面向复杂查询的索引,查询性能差。

事务一致性

关系型数据库:遵循ACID事务模型,可以保证事务强一致性。

NoSQL数据库:只能保证最终一致性,不能保证事务强一致性。

数据完整性

关系型数据库:具有保证完整性的完备机制。

NoSQL数据库:不能实现完整性约束。

可用性

关系型数据库:规模增大后,为了保证严格的一致性可用性方面会被削弱。

NoSQL数据库:牺牲一部分一致性,能够在短时间内迅速返回所需的结果,具有很好的可用性。

标准化

关系型数据库:遵循SQL标准,标准化比较完善。

NoSQL数据库:未形成通用的行业标准。

技术支持

关系型数据库:很多都是商业数据库,可以获得非常强大的技术和后续服务支持。

NoSQL数据库:很多属于开源产品,处于整个发展的初期阶段。

可维护性

关系型数据库:需要管理员维护。

NoSQL数据库:没有成熟的基础和实践操作规范,维护较为复杂。

5.3 四大类型NoSQL数据库

键值数据库

数据模型

键是一个字符串对象,值可以是任意类型的数据,比如整型,数组,列表,集合等等。

典型应用

涉及频繁读写、拥有简单数据模型的应用,内容缓存,如会话、配置文件、参数、购物车等,存储配置和用户数据信息等移动应用。

优缺点

扩展性好,灵活性好,写操作性能非常高;无法存储结构化信息,条件查询效率较低(必须通过key才能找到对应的值,无法直接对值进行查询)。

不适用情形

键值数据库没有通过值查询的途径;不能通过两个或两个以上的键来关联数据;在一些键值数据库中,产生故障时,不能回滚。

键值数据库是理想的缓冲层解决方案。

列族数据库

数据模型——列族

典型应用

分布式数据存储与管理;数据在地理上分布于多个数据中心的应用程序;可以容忍副本中存在短期不一致情况的应用程序;拥有动态字段的应用程序。

优缺点

查找速度快、可扩展性强、容易进行分布式扩展、复杂性低;功能较少,大都不支持强事务一致性

不适用情形

需要ACID事务支持的情形时某些产品不适用。

文档数据库

数据模型

JSON数据格式,本质上就是一个键值数据库,不够值Value是版本化文档。

典型应用

存储、索引并管理面向文档的数据;或者类似的半结构化数据。

优缺点

能够将它自己的数据内容和类型进行自我描述,文档数据库可以完整包含在一个文档里,更好的并发性(在对数据进行更新时,只需要锁定一个文档就可以把相关数据修改掉),提供嵌入式文档功能,可以把经常查询的数据存储在同一个文档中;缺乏统一的查询语法。

不适用情形

文档数据库不支持文档间的事务。

图数据库

数据模型——图结构

典型应用

专门用于处理具有高度相互关联关系的数据;比较适合于社交网络、模式识别、依赖分析、推荐系统以及路径寻找等问题。

优缺点

灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱;数据类型应用范围非常有限。

不适用情形

关联性差的数据。

5.4 NoSQL数据库的理论基石

CAP

Consistency一致性

指任何一个读操作总能读到之前完成的写操作结果。

Availability可用性

指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应。

Partition tolerance分区容忍性

指当出现网络分区的情况时(即系统中的一部分节点无法和其他节点通信),分离的系统也能够正常运行。

一个分布式系统不可能同时满足一致性、可用性和分区容忍性,只能三者取其二。

CA:强调一致性(C)和可用性(A),放弃分区容忍性(P)

最简单的做法是把所有与事务相关的内容都放到同一台机器上。很显然,这种做法会严重影响系统的可扩展性。传统的关系数据库(MySQL、SQL Server和PostgreSQL),都采用了这种设计原则,因此,扩展性都比较差。

CP:强调一致性(C)和分区容忍性(P),放弃可用性(A)

当出现网络分区情况时,受影响的服务需要等待数据一致,因此在等待期间就无法对外提供服务

AP:强调可用性(A)和分区容忍性(P),放弃一致性(C)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值