NoSQL非关系型数据库技术和应用培训课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 基础理论与架构分类
5)异步复制:和RAID存储系统不同的是,NoSQL中的 复制,往往是基于日志的异步复制。这样,数据就可以尽快地 写入一个节点,而不会被网络传输引起迟延。缺点是并不总是 能保证一致性,这样的方式在出现故障的时候,可能会丢失少 量的数据;
6)BASE:相对于事务严格的ACID特性,NoSQL数据库 保证的是BASE特性。
1 基础理论与架构分类
NoSQL共同特征: 1)不需要预定义模式:不需要事先定义数据模式,预定 义表结构。数据中的每条记录都可能有不同的属性和格式,当 插入数据时,并不需要预先定义它们的模式; 2)无共享架构:相对于将所有数据存储的存储区域网络 中的全共享架构,NoSQL往往将数据划分后存储在各个本地服 务器上。因为从本地磁盘读取数据的性能往往好于通过网络传 输读取数据的性能,从而提高了系统的性能;
1 基础理论与架构分类
表1 CAP理论应用及实例
选择 一致性+可用性 一致性+分区容忍性
特征 2PC缓存验证
乐观锁
实例
单机数据库、集群数据 库、LDAP、xFS
分布式系统、分布式锁 、大部分的协议
可用性+分区容忍性
冲突解决,乐 观化
Coda(分布式档案系统 )、网络缓存、DNS
1 基础理论与架构分类
1 基础理论与架构分类
BASE思想实际上是CAP理论中AP的衍伸。它通过牺牲高 一致性,保证高可用性和分区容忍性。
BASE思想的组成有以下3个部分:基本可用、软状态、 最终一致性。BASE模式指的是一个应用在任意时间首先应该 能完成最基本化的工作(即基本可用),并不需要总是一致( 即软状态),但最终应该是一致(即最终一致性)的。ACID 和BASE应该被看作同一范畴内的互相补充品,而不是替代品 。
表2 CAP理论数据库应用实例Leabharlann Baidu功能分类
选择 一致性+可用性 一致性+分区容忍性 可用性+分区容忍性
例子
MySQL Vertica BigTable HBase MongoDB Dynamo Cassandra
对应功能分类
关系型数据库 列存储数据库 列存储数据库 列存储数据库 文档型数据库 键值存储数据库 列存储数据库
1 基础理论与架构分类
BASE理论: 传统ACID模式对于数据的属性要求非常高,在分布式系 统中比较难以达到。所以在CAP理论的基础上,提出了BASE 思想,对一致性进行概化处理。要解释BASE思想,首先要对 ACID有一个了解,因为BASE是相对于DBMS中的ACID所提 出来的新思想。
1 基础理论与架构分类
NoSQL非关系型数据库 技术和应用
CONTENTS
C目 录 ONTENTS
1 基础理论与架构分类 2 部署方案与性能分析 3 发展现状与未来趋势
1 基础理论与架构分类
NoSQL数据库是非关系型数据存储的广义定义,它不同 于符合ACID理论的关系型数据库,数据存储不需要固定的表 结构,通常也不存在连接操作。NoSQL数据库不使用传统的关 系数据库模型,而是使用如键值存储数据库、列存储数据库、 文档型数据库、图形数据库等方式存储数据模型。
1 基础理论与架构分类
3)弹性可扩展:可以在系统运行的时候,动态增加或者 删除结点。不需要停机维护,数据可以自动迁移;
4)分区:相对于将数据存放于同一个节点,NoSQL数据 库需要将数据进行分区,将记录分散在多个节点上面。并且通 常分区的同时还要做复制。这样既提高了并行性能,又能保证 没有单点失效的问题;
1 基础理论与架构分类
表3 BASE与ACID的优缺点对比
ACID 高度一致 高度分割化 着重于“提交” 网状事务 弱可用性
较保守 扩展性不强
BASE 弱一致,仅需要针对性数据
可用性第一位 一般注重 较为激进 注重可用性 更简单
更快,更具有扩展性
1 基础理论与架构分类
NoSQL大致可以分为四类,分别为键值存储数据库、列 存储数据库、文档型数据库和图形数据库。
1 基础理论与架构分类
NoSQL适用情况: 1)数据模型比较简单; 2)需要灵活性更强的IT系统; 3)对数据库性能要求较高; 4)不需要高度的数据一致性。
1 基础理论与架构分类
CAP理论: CAP解释为一致性(consistency)、可用性(availability )和分区容忍性(partition tolerance)。 一致性:一个数据系统如何处理读写操作的一致性问题 。分布式系统对于一致性的要求为当更新写入操作完成时,其 余读取操作需要及时看到数据的更新;
ACID指的是传统数据库对于数据特性的要求。 原子性:即事务执行作为原子,不可再分离,整个语句 要么执行,要么不执行,不可能停在中间某个环节; 一致性:在事务开始之前和事务结束之后,数据库的完 整性约束没有被破坏; 隔离性:两个事务的执行互不干扰,也不会发生交互, 一个事务不可能看到其他事务运行时中某一时刻的数据; 持久性:在事务完成以后,该事务对数据库所做的更改 便持久地保存在数据库之中,并不会被回滚。
1 基础理论与架构分类
在数据库系统中,事务的ACID属性保证了数据库的一致 性,如银行系统中,付款就是一个事务,从原账户扣除金额以 及向目标账户添加金额,这两个数据库操作的总和构成一个完 整的逻辑过程,为原子操作不可拆分,从而保证了整个系统中 的总金额没有变化。
但是ACID特性对于大型的分布式系统来说,与高性能是 不兼容的。如在线购买商品的时候,任何一个人购物的过程都 为一个原子操作,不允许存在两个人同时进行购物的情况。很 明显对于绝大多数在线商城,这个方法并不适用。
键值存储数据库 键值存储典型实现的数据结构一般为数组链表:先通过 通过hash算法得出hashcode,找到数组的某一个位置,然后插 入链表的第一个位置。
1 基础理论与架构分类
可用性:一个系统能够持续不间断使用的问题。严格定 义上的高性能可用性意味着一个系统从设计到实施都应该能够 提供可持续的操作;
分区容忍性:一个系统在提供持续性操作时分区处理的 能力。一旦开始将数据和逻辑分布在不同的节点上,就有形成 分区的风险。假定网线被切断,就形成分区,在不同分区的节 点A和节点B无法通信。由于Web提供的这种分布式能力,临时 的分区是一个常见的情况,处理这种情况就属于分区容忍性。