提纲 51 NOSQL简介 52 NOSQL兴起的原因 ·53 NOSQL与关系数据库的比较 54 NOSQL的四大类型 55 NOSQL的三大基石 56从 NOSQL到 NewSQL数据库 57文档数据库 MongoDB 本章小结 本PPT是如下教材的配套讲义: 21世纪高等教育计算机规划教材 《大数据技术原理与应用 —概念、存储、处理、分析与应用》 (2015年8月第1版) 厦门大学林子雨编著,人民邮电出版社 SBN:978-7-11539287-9 欢迎访问《大数据技术原理与应用》教材官方网站: http://dblab.xmu.edu.cn/post/bigdata 大数据技术原理与应用》 厦门大学计算机科学系 林子雨 xmu. edu. cn
《大数据技术原理与应用》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 提纲 • 5.1 NoSQL简介 • 5.2 NoSQL兴起的原因 • 5.3 NoSQL与关系数据库的比较 • 5.4 NoSQL的四大类型 • 5.5 NoSQL的三大基石 • 5.6 从NoSQL到NewSQL数据库 • 5.7 文档数据库MongoDB • 本章小结 欢迎访问《大数据技术原理与应用》教材官方网站: http://dblab.xmu.edu.cn/post/bigdata 本PPT是如下教材的配套讲义: 21世纪高等教育计算机规划教材 《大数据技术原理与应用 ——概念、存储、处理、分析与应用》 (2015年8月第1版) 厦门大学 林子雨 编著,人民邮电出版社 ISBN:978-7-115-39287-9
●5.1NsQL简介 概念演变 Not only sQl 最初表示“反SQL”运动 现在表示关系和非关系型数据库各有优缺点 用新型的非关系数据库取代关系数据库 彼此都无法互相取代 通常, NOSQL数据库具有以下几个特点: (1)灵活的可扩展性 (2)灵活的数据模型 (3)与云计算紧密融合 大数据技术原理与应用》 厦门大学计算机科学系 lin@xmu.edu.cn
《大数据技术原理与应用》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1 NoSQL简介 通常,NoSQL数据库具有以下几个特点: (1)灵活的可扩展性 (2)灵活的数据模型 (3)与云计算紧密融合 最初表示“反SQL”运动 用新型的非关系数据库取代关系数据库 Not only SQL 现在表示关系和非关系型数据库各有优缺点 彼此都无法互相取代 概念演变
●5.1NsQL简介 现在已经有很多公司使用了 NOSQL数据库 . google ° facebook . mozilla . Adobe ° oursquare linkedin Digg .McGraw-Hill education vermont Public Radio ·百度、腾讯、阿里、新浪、华为 大数据技术原理与应用》 厦门大学计算机科学系 lin@xmu.edu.cn
《大数据技术原理与应用》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.1 NoSQL简介 现在已经有很多公司使用了NoSQL数据库: •Google •Facebook •Mozilla •Adobe •Foursquare •LinkedIn •Digg •McGraw-Hill Education •Vermont Public Radio •百度、腾讯、阿里、新浪、华为……
幽52NsQL兴起的原因 1、关系数据库已经无法满足Web20的需求。主要表现在以下几个方面: (1)无法满足海量数据的管理需求 (2)无法满足数据高并发的需求 (3)无法满足高可扩展性和高可用性的需求 1分钟时间: ●新浪可以发送2万条微博 ●苹果可以下载47万次应用 ●淘宝可以卖出6万件商品 ●人人网可以发生30万次访问 ●百度可以产生90万次搜索查询 大数据技术原理与应用》 厦门大学计算机科学系 林子雨 lin@xmu.edu.cn
《大数据技术原理与应用》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.2 NoSQL兴起的原因 1、关系数据库已经无法满足Web2.0的需求。主要表现在以下几个方面: (1)无法满足海量数据的管理需求 (2)无法满足数据高并发的需求 (3)无法满足高可扩展性和高可用性的需求
52 NOSQL兴起的原因 MySQL集群是否可以完全解决问题? 复杂性:部署、管理、配置很复杂 数据库复制: MySQL主备之间采用复 制方式,只能是异步复制,当主库压力 分库1 分库2 分库、 分库4 较大时可能产生较大延迟,主备切换可 能会丢失最后一部分更新事务,这时往 往需要人工介入,备份和恢复不方便 :M!S::::: M*S::M:S::::: M 扩容问题:如果系统压力过大需要增加 新的机器,这个过程涉及数据重新划分 ,整个过程比较复杂,且容易出错 动态数据迁移问题:如果某个数据库组 物理机 物理机物理机物理机 压力过大,需要将其中部分数据迁移出 去,迁移过程需要总控节点整体协调, 以及数据库节点的配合。这个过程很难 做到自动化 大数据技术原理与应用》 厦门大学计算机科学系 林子雨 lin@xmu.edu.cn
《大数据技术原理与应用》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.2 NoSQL兴起的原因 •复杂性:部署、管理、配置很复杂 •数据库复制:MySQL主备之间采用复 制方式,只能是异步复制,当主库压力 较大时可能产生较大延迟,主备切换可 能会丢失最后一部分更新事务,这时往 往需要人工介入,备份和恢复不方便 •扩容问题:如果系统压力过大需要增加 新的机器,这个过程涉及数据重新划分 ,整个过程比较复杂,且容易出错 •动态数据迁移问题:如果某个数据库组 压力过大,需要将其中部分数据迁移出 去,迁移过程需要总控节点整体协调, 以及数据库节点的配合。这个过程很难 做到自动化 MySQL集群是否可以完全解决问题?
幽52NsQL兴起的原因 2、“ One size fits all”模式很难适用于截然不同的业务场景 关系模型作为统一的数据模型既被用于数据分析,也被用于在线业 务。但这两者一个强调高吞吐,一个强调低延时,已经演化出完全 不同的架构。用同一套模型来抽象显然是不合适的 Hadoop就是针对数据分析 MongoDB、 Redis等是针对在线业务,两者都抛弃了关系模型 大数据技术原理与应用》 厦门大学计算机科学系 lin@xmu.edu.cn
《大数据技术原理与应用》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.2 NoSQL兴起的原因 2、“One size fits all”模式很难适用于截然不同的业务场景 •关系模型作为统一的数据模型既被用于数据分析,也被用于在线业 务。但这两者一个强调高吞吐,一个强调低延时,已经演化出完全 不同的架构。用同一套模型来抽象显然是不合适的 •Hadoop就是针对数据分析 •MongoDB、Redis等是针对在线业务,两者都抛弃了关系模型
幽52NsQL兴起的原因 3、关系数据库的关键特性包括完善的事务机制和高效的查询机制。但是, 关系数据库引以为傲的两个关键特性,到了Web20时代却成了鸡肋,主要 表现在以下几个方面: (1)Web2.0网站系统通常不要求严格的数据库事务 (2)Web20并不要求严格的读写实时性 (3)Web2.0通常不包含大量复杂的SQL查询(去结构化,存储空间换取 更好的查询性能) 大数据技术原理与应用》 厦门大学计算机科学系 lin@xmu.edu.cn
《大数据技术原理与应用》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.2 NoSQL兴起的原因 3、关系数据库的关键特性包括完善的事务机制和高效的查询机制。但是, 关系数据库引以为傲的两个关键特性,到了Web2.0时代却成了鸡肋,主要 表现在以下几个方面: (1)Web2.0网站系统通常不要求严格的数据库事务 (2)Web2.0并不要求严格的读写实时性 (3)Web2.0通常不包含大量复杂的SQL查询(去结构化,存储空间换取 更好的查询性能)
●5.3NSQL与关系数据库的比较 表51 NOSQL和关系数据库的简单比较 比较标准 RDBMS NOSQL 备注 数据库原理 完全支持 部分支持 RDBMS有关系代数理论作为基础 NOSQL没有统一的理论基础 RDBMS很难实现横向扩展,纵向扩展的空间也比较 数据规模 大 超大 有限,性能会随着数据规模的增大而降低 NOSQL可以很容易通过添加更多设备来支持更大规 模的数据 RDBMS需要定义数据库模式,严格遵守数据定义和 数据库模式 固定 灵活 相关约束条件 NOSQL不存在数据库模式,可以自由灵活定义并存 储各种不同类型的数据 可以实现高效的 简单查询,但是 RDBMS借助于索引机制可以实现快速查询(包括记 录查询和范围查询) 查询效率 快 不具备高度结构 化查询等特性, 很多 NOSQL数据库没有面向复杂查询的索引,虽然 复杂查询的性能 NOSQL可以使用 MapReduce来加速查询,但是,在 不尽人意 复杂查询方面的性能仍然不如 RDBMS 大数据技术原理与应用》 厦门大学计算机科学系 林子雨 lin@xmu.edu.cn
《大数据技术原理与应用》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.3 NoSQL与关系数据库的比较 比较标准 RDBMS NoSQL 备注 数据库原理 完全支持 部分支持 RDBMS有关系代数理论作为基础 NoSQL没有统一的理论基础 数据规模 大 超大 RDBMS很难实现横向扩展,纵向扩展的空间也比较 有限,性能会随着数据规模的增大而降低 NoSQL可以很容易通过添加更多设备来支持更大规 模的数据 数据库模式 固定 灵活 RDBMS需要定义数据库模式,严格遵守数据定义和 相关约束条件 NoSQL不存在数据库模式,可以自由灵活定义并存 储各种不同类型的数据 查询效率 快 可以实现高效的 简单查询,但是 不具备高度结构 化查询等特性, 复杂查询的性能 不尽人意 RDBMS借助于索引机制可以实现快速查询(包括记 录查询和范围查询) 很多NoSQL数据库没有面向复杂查询的索引,虽然 NoSQL可以使用MapReduce来加速查询,但是,在 复杂查询方面的性能仍然不如RDBMS 表5-1 NoSQL和关系数据库的简单比较
53 NOSQL与关系数据库的比较 表5-1 NOSQL和关系数据库的简单比较(续) 比较标准 RDBMS NOSQL 备注 RDBMS严格遵守事务AC|D模型,可以保证事 一致性 强一致性 弱一致性务强一致性 很多 NOSQL数据库放松了对事务AC|D四性的要 求,而是遵守BASE模型,只能保证最终一致性 任何一个 RDBMS都可以很容易实现数据完整性, 比如通过主键或者非空约束来实现实体完整性 数据完整性容易实现很难实现通过主键、外键来实现参照完整性,通过约束 或者触发器来实现用户自定义完整性 但是,在 NOSQL数据库却无法实现 RDBMS很难实现横向扩展,纵向扩展的空间也 扩展性 一般 好NsQL在设计之初就充分考虑了横向扩展的需 求,可以很容易通过添加廉价设备实现扩展 RDBMS在任何时候都以保证数据一致性为优先 目标,其次才是优化系统性能,随着数据规模 可用性 好 很好的增大, RDBMS为了保证严格的一致性,只能 提供相对较弱的可用性 大多数 NOSQL都能提供较高的可用性 大数据技术原理与应用》 厦门大学计算机科学系 林子雨 lin@xmu.edu.cn
《大数据技术原理与应用》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.3 NoSQL与关系数据库的比较 比较标准 RDBMS NoSQL 备注 一致性 强一致性 弱一致性 RDBMS严格遵守事务ACID模型,可以保证事 务强一致性 很多NoSQL数据库放松了对事务ACID四性的要 求,而是遵守BASE模型,只能保证最终一致性 数据完整性 容易实现 很难实现 任何一个RDBMS都可以很容易实现数据完整性, 比如通过主键或者非空约束来实现实体完整性, 通过主键、外键来实现参照完整性,通过约束 或者触发器来实现用户自定义完整性 但是,在NoSQL数据库却无法实现 扩展性 一般 好 RDBMS很难实现横向扩展,纵向扩展的空间也 比较有限 NoSQL在设计之初就充分考虑了横向扩展的需 求,可以很容易通过添加廉价设备实现扩展 可用性 好 很好 RDBMS在任何时候都以保证数据一致性为优先 目标,其次才是优化系统性能,随着数据规模 的增大,RDBMS为了保证严格的一致性,只能 提供相对较弱的可用性 大多数NoSQL都能提供较高的可用性 表5-1 NoSQL和关系数据库的简单比较(续)
●5.3NSQL与关系数据库的比较 表5-1 NOSQL和关系数据库的简单比较(续) 比较标准 RDBMS NoSQL 备注 RDBMS已经标准化(SQL) NOSQL还没有行业标准,不同的 NOSQL数据库 标准化 是 否 都有自己的查询语言,很难规范应用程序接口 Stone Braker认为:NoS①L缺乏统一查询语言, 将会拖慢NoS①L发展 RDBMS经过几十年的发展,已经非常成熟, 技术支持 高 低 Oracle等大型厂商都可以提供很好的技术支持 NOSQL在技术支持方面仍然处于起步阶段,还 不成熟,缺乏有力的技术支持 可维护性 复杂 复杂 RDBMS需要专门的数据库管理员(DBA)维护 NOSQL数据库虽然没有DBMS复杂,也难以维护 大数据技术原理与应用》 厦门大学计算机科学系 林子雨 lin@xmu.edu.cn
《大数据技术原理与应用》 厦门大学计算机科学系 林子雨 ziyulin@xmu.edu.cn 5.3 NoSQL与关系数据库的比较 比较标准 RDBMS NoSQL 备注 标准化 是 否 RDBMS已经标准化(SQL) NoSQL还没有行业标准,不同的NoSQL数据库 都有自己的查询语言,很难规范应用程序接口 StoneBraker认为:NoSQL缺乏统一查询语言, 将会拖慢NoSQL发展 技术支持 高 低 RDBMS经过几十年的发展,已经非常成熟, Oracle等大型厂商都可以提供很好的技术支持 NoSQL在技术支持方面仍然处于起步阶段,还 不成熟,缺乏有力的技术支持 可维护性 复杂 复杂 RDBMS需要专门的数据库管理员(DBA)维护 NoSQL数据库虽然没有DBMS复杂,也难以维护 表5-1 NoSQL和关系数据库的简单比较(续)