提纲 3.1 NoSQL简介 ● 3.2 NoSQL兴起的原因 3.3 NoSQL与关系数据库的 比较 3.4 NoSQL的四大类型 3.5 NoSQL的三大基石 3.6从NoSQL到NewSQL数 据库 ·3.7文档数据库MongoDB 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 提纲 • 3.1 NoSQL简介 • 3.2 NoSQL兴起的原因 • 3.3 NoSQL与关系数据库的 比较 • 3.4 NoSQL的四大类型 • 3.5 NoSQL的三大基石 • 3.6 从NoSQL到NewSQL数 据库 • 3.7 文档数据库MongoDB
3.1 NoSQL简介 概念演变 Not only SQL 最初表示“反SQL”运动 现在表示关系和非关系型数据库各有优缺点 用新型的非关系数据库取代关系数据库 彼此都无法互相取代 通常,NoSQL数据库具有以下几个特点: (1)高水平扩展能力 (2)灵活的数据模型 (3)最终一致性 (4)开源 (5)分布式 http://nosql-database.org/ 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.1 NoSQL简介 通常,NoSQL数据库具有以下几个特点: (1)高水平扩展能力 (2)灵活的数据模型 (3)最终一致性 (4)开源 (5)分布式 http://nosql-database.org/ 最初表示“反SQL”运动 用新型的非关系数据库取代关系数据库 Not only SQL 现在表示关系和非关系型数据库各有优缺点 彼此都无法互相取代 概念演变
3.2 NoSQL兴起的原因 ☒ 1、关系数据库已经无法满足Web2.0的需求。主要表现在以下 几个方面: (1)无法满足高效率存储和访问的需求 (2)无法满足数据高并发读写的需求 (3)无法满足高可扩展性和高可用性的需求 1分钟时间: 。新浪可以发送2万条微博 ●苹果可以下载4.7万次应用 ●淘宝可以卖出6万件商品 。人人网可以发生30万次访问 ● 百度可以产生9①万次搜素查询 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.2 NoSQL兴起的原因 1、关系数据库已经无法满足Web2.0的需求。主要表现在以下 几个方面: (1)无法满足高效率存储和访问的需求 (2)无法满足数据高并发读写的需求 (3)无法满足高可扩展性和高可用性的需求
3.2 NoSQL兴起的原因 ySQL集群是否可以完全解决问题? 复杂性:部署、管理、配置很复杂 牌喇 数据库复制:MySQL主备之间采用复制方 式,只能是异步复制,当主库压力较大时可 能产生较大延迟,主备切换可能会丢失最后 一 部分更新事务,这时往往需要人工介入, 备份和恢复不方便 扩容问题:如果系统压力过大需要增加新的 机器,这个过程涉及数据重新划分,整个过 程比较复杂,且容易出错 动态数据迁移问题:如果某个数据库组压力 物助 物凯 物理肌 物理 过大,需要将其中部分数据迁移出去,迁移 过程需要总控节点整体协调,以及数据库节 点的配合。这个过程很难做到自动化 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.2 NoSQL兴起的原因 •复杂性:部署、管理、配置很复杂 •数据库复制:MySQL主备之间采用复制方 式,只能是异步复制,当主库压力较大时可 能产生较大延迟,主备切换可能会丢失最后 一部分更新事务,这时往往需要人工介入, 备份和恢复不方便 •扩容问题:如果系统压力过大需要增加新的 机器,这个过程涉及数据重新划分,整个过 程比较复杂,且容易出错 •动态数据迁移问题:如果某个数据库组压力 过大,需要将其中部分数据迁移出去,迁移 过程需要总控节点整体协调,以及数据库节 点的配合。这个过程很难做到自动化 MySQL集群是否可以完全解决问题?
3.2 NoSQL兴起的原因 2、“One size fits all”模式很难适用于截然不同的业务场景 关系模型作为统一的数据模型既被用于数据分析,也被用于 在线业务。但这两者一个强调高吞吐,一个强调低延时,己 经演化出完全不同的架构。用同一套模型来抽象显然是不合 适的 √Hadoop就是针对数据分析 √MongoDB、Redis等是针对在线业务,两者都抛弃了关系模 型 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.2 NoSQL兴起的原因 2、“One size fits all”模式很难适用于截然不同的业务场景 关系模型作为统一的数据模型既被用于数据分析,也被用于 在线业务。但这两者一个强调高吞吐,一个强调低延时,已 经演化出完全不同的架构。用同一套模型来抽象显然是不合 适的 Hadoop就是针对数据分析 MongoDB、Redis等是针对在线业务,两者都抛弃了关系模 型
3.2 NoSQL兴起的原因 ☒ 3、关系数据库的关键特性包括完善的事务机制和高效的查询 机制。但是,关系数据库引以为傲的两个关键特性,到了 Web2.0时代却成了鸡肋,主要表现在以下几个方面: (1)Web2.0网站系统通常不要求严格的数据库事务 (2)Web2.0并不要求严格的读写实时性 (3)Web2.0通常不包含大量复杂的SQL查询(去结构化, 存储空间换取更好的查询性能) 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.2 NoSQL兴起的原因 3、关系数据库的关键特性包括完善的事务机制和高效的查询 机制。但是,关系数据库引以为傲的两个关键特性,到了 Web2.0时代却成了鸡肋,主要表现在以下几个方面: (1)Web2.0网站系统通常不要求严格的数据库事务 (2)Web2.0并不要求严格的读写实时性 (3)Web2.0通常不包含大量复杂的SQL查询(去结构化, 存储空间换取更好的查询性能)
3.3 NoSQL与关系数据库的比较 比较标准 RDBMS NoSQL 备注 数据库原理 完全支持 部分支持 RDBMS有关系代数理论作为基础 NoSQL没有统一的理论基础 RDBMS很难实现横向扩展,纵向扩展的空间也比较 数据规模 大 超大 有限,性能会随着数据规模的增大而降低 NoSQL可以很容易通过添加更多设备来支持更大规 模的数据 RDBMS需要定义数据库模式,严格遵守数据定义和 数据库模式 固定 灵活 相关约束条件 NoSQL不存在数据库模式,可以自由灵活定义并存 储各种不同类型的数据 可以实现高效的 RDBMS借助于索引机制可以实现快速查询(包括记 简单查询,但是 录查询和范围查询) 查询效率 快 不具备高度结构 很多NoSQL数据库没有面向复杂查询的索引,虽然 化查询等特性, 复杂查询的性能 NoSQL可以使用MapReduce来加速查询,但是,在 不尽人意 复杂查询方面的性能仍然不如RDBMS 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.3 NoSQL与关系数据库的比较 比较标准 RDBMS NoSQL 备注 数据库原理 完全支持 部分支持 RDBMS有关系代数理论作为基础 NoSQL没有统一的理论基础 数据规模 大 超大 RDBMS很难实现横向扩展,纵向扩展的空间也比较 有限,性能会随着数据规模的增大而降低 NoSQL可以很容易通过添加更多设备来支持更大规 模的数据 数据库模式 固定 灵活 RDBMS需要定义数据库模式,严格遵守数据定义和 相关约束条件 NoSQL不存在数据库模式,可以自由灵活定义并存 储各种不同类型的数据 查询效率 快 可以实现高效的 简单查询,但是 不具备高度结构 化查询等特性, 复杂查询的性能 不尽人意 RDBMS借助于索引机制可以实现快速查询(包括记 录查询和范围查询) 很多NoSQL数据库没有面向复杂查询的索引,虽然 NoSQL可以使用MapReduce来加速查询,但是,在 复杂查询方面的性能仍然不如RDBMS
3.3 NoSQL与关系数据库的比较 比较标准 RDBMS NoSQL 备注 RDBMS严格遵守事务ACID模型,可以保证事 一致性 强一致性 弱一致性 务强一致性 很多NoSQL数据库放松了对事务ACID四性的要 求,而是遵守BASE模型,只能保证最终一致性 任何一个RDBMS都可以很容易实现数据完整性, 比如通过主键或者非空约束来实现实体完整性, 数据完整性 容易实现 很难实现 通过主键、外键来实现参照完整性,通过约束 或者触发器来实现用户自定义完整性 但是,在NoSQL数据库却无法实现 RDBMS很难实现横向扩展,纵向扩展的空间也 扩展性 一般 好 比较有限 NoSQL在设计之初就充分考虑了横向扩展的需 求,可以很容易通过添加廉价设备实现扩展 RDBMS在任何时候都以保证数据一致性为优先 目标,其次才是优化系统性能,随着数据规模 可用性 好 很好 的增大,RDBMS为了保证严格的一致性,只能 提供相对较弱的可用性 大多数NoSQL都能提供较高的可用性 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.3 NoSQL与关系数据库的比较 比较标准 RDBMS NoSQL 备注 一致性 强一致性 弱一致性 RDBMS严格遵守事务ACID模型,可以保证事 务强一致性 很多NoSQL数据库放松了对事务ACID四性的要 求,而是遵守BASE模型,只能保证最终一致性 数据完整性 容易实现 很难实现 任何一个RDBMS都可以很容易实现数据完整性, 比如通过主键或者非空约束来实现实体完整性, 通过主键、外键来实现参照完整性,通过约束 或者触发器来实现用户自定义完整性 但是,在NoSQL数据库却无法实现 扩展性 一般 好 RDBMS很难实现横向扩展,纵向扩展的空间也 比较有限 NoSQL在设计之初就充分考虑了横向扩展的需 求,可以很容易通过添加廉价设备实现扩展 可用性 好 很好 RDBMS在任何时候都以保证数据一致性为优先 目标,其次才是优化系统性能,随着数据规模 的增大,RDBMS为了保证严格的一致性,只能 提供相对较弱的可用性 大多数NoSQL都能提供较高的可用性
3.3 NoSQL与关系数据库的比较 比较标准 RDBMS NoSQL 备注 RDBMS已经标准化(SQL) NoSQL还没有行业标准,不同的NoSQL数据库 标准化 是 否 都有自己的查询语言,很难规范应用程序接口 StoneBraker认为:NoSQL缺乏统一查询语言, 将会拖慢NoSQL发展 RDBMS经过几十年的发展,已经非常成熟, 技术支持 高 低 Oracle等大型厂商都可以提供很好的技术支持 NoSQL在技术支持方面仍然处于起步阶段,还 不成熟,缺乏有力的技术支持 可维护性 复杂 复杂 RDBMS需要专门的数据库管理员(DBA)维护 NoSQL数据库虽然没有DBMS复杂,也难以维护 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.3 NoSQL与关系数据库的比较 比较标准 RDBMS NoSQL 备注 标准化 是 否 RDBMS已经标准化(SQL) NoSQL还没有行业标准,不同的NoSQL数据库 都有自己的查询语言,很难规范应用程序接口 StoneBraker认为:NoSQL缺乏统一查询语言, 将会拖慢NoSQL发展 技术支持 高 低 RDBMS经过几十年的发展,已经非常成熟, Oracle等大型厂商都可以提供很好的技术支持 NoSQL在技术支持方面仍然处于起步阶段,还 不成熟,缺乏有力的技术支持 可维护性 复杂 复杂 RDBMS需要专门的数据库管理员(DBA)维护 NoSQL数据库虽然没有DBMS复杂,也难以维护
3.3 NoSQL与关系数据库的比较 总结 (1)关系数据库 优势:以完善的关系代数理论作为基础,有严格的标准,支持事务 ACD四性,借助索引机制可以实现高效的查询,技术成熟,有专业 公司的技术支持 劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死 板、无法较好支持Neb2.0应用,事务机制影响了系统的整体性能等 (2)NoSQL数据库 优势:可以支持超大规模数据存储,灵活的数据模型可以很好地支持 Web2.0应用,具有强大的横向扩展能力等 劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强 一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术 支持,维护较困难等 学以致用 DATABASE@UESTC 用以促学
学以致用 DATABASE@UESTC 用以促学 3.3 NoSQL与关系数据库的比较 总结 (1)关系数据库 优势:以完善的关系代数理论作为基础,有严格的标准,支持事务 ACID四性,借助索引机制可以实现高效的查询,技术成熟,有专业 公司的技术支持 劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死 板、无法较好支持Web2.0应用,事务机制影响了系统的整体性能等 (2)NoSQL数据库 优势:可以支持超大规模数据存储,灵活的数据模型可以很好地支持 Web2.0应用,具有强大的横向扩展能力等 劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强 一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术 支持,维护较困难等