NoSQL数据库原理-第二章-NoSQL数据库的基本原理课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《NoSQL数据库原理-第二章-NoSQL数据库的基本原理课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NoSQL 数据库 原理 第二 基本原理 课件
- 资源描述:
-
1、NoSQL数据库原理第2章 NoSQL数据库的基本原理 2 2.1.1 关系模型(1)实体(Entity):是指现实世界中的具体或抽象的事物。例如:一个学生、一个教师、一门课程等。(2)属性(Attribute):对实体的特性进行描述,例如学生的学号、班级、姓名等。属性一般要求具有原子性,即不可再分割。属性具有值域和数据类型两种特性。(3)实体标识符:能够唯一标识一个实体的属性称为实体标识符,例如学生的学号,即数据库实现中的键(key)的概念。(4)联系(Relation):实体之间的关系,以及实体内部属性之间的关系。第2章 NoSQL数据库的基本原理2.1 关系型数据库的重要机制回顾 3 2
2、.1.1 关系模型 关系模型中的常见特征l 关系模型中具有明确的表结构l 列具有原子性,不可再分割l 列的值域和类型时固定的l 如果某字段出现空值,一般会保留存储空间(NULL),以便今后插入数值 NoSQL可能打破这些特征l NoSQL中可能没有明确的结构l 列可能是复合型的l 列中的内容和类型可能是随意的、无定义的l 不会为空值流出存储空间,可能很难直接插入数值第2章 NoSQL数据库的基本原理2.1 关系型数据库的重要机制回顾 4 2.1.2 关系型数据库的完整性约束 关系模型中的完整性约束l 域完整性:是指对列的值域、类型等进行约束。l 实体完整性:实体集中的每个实体都具有唯一性标识,
3、或者说数据表中的每个元组是可区分的。这意味着数据表中存在不能为空的主属性(即主键)。l 参照完整性:表明表1中的一列A依赖于表2中被参照列的情况。l 用户定义的完整性:用户根据业务逻辑定义的完整性约束。NoSQL中的完整性约束l 域完整性一般较弱,或不支持l 可能存在主键相同的行,或内容相同但时间戳不同的行等情况,一般不会出现空的主属性l 一般不提供参照完整性,或者外键,因此一般也不支持跨表的关联查询(Join)l 用户定义完整性靠应用程序支持第2章 NoSQL数据库的基本原理2.1 关系型数据库的重要机制回顾 5 2.1.3 关系型数据库的事务机制 事务是关系型数据库最重要的机制之一l 关系
4、型数据库会对并发操作进行控制,防止用户在存取数据时破坏数据的完整性,造成数据错误。l 事务机制可以保障用户定义的一组操作序列作为一个不可分割的整体提交执行,这一组操作要么都执行,要么都不执行,当事务执行成功,我们认为事务被整体“提交”,则所有数据改变均被持久化保存,而当事务在执行中发生错误时,事务会进行“回滚”,返回到事务尚未开始执行的状态。ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。l ACID是典型的强一致性要求l ACID是大多数NoSQL抛弃的机制,因为无法在分布式环境中保证效率第2章 NoSQ
5、L数据库的基本原理2.1 关系型数据库的重要机制回顾 6 2.1.3 关系型数据库的事务机制 并发控制和封锁机制l 并发调度指将多个事务串行化,并发控制则强调解决共享资源并发存取过程中产生的各类问题 丢失更新、幻读、脏读l 封锁是数据库中所采用的常见并发控制。封锁是一种软件机制,使得当某个事务访问某数据对象时,其他事务不能对该数据进行特定的访问。共享锁、排它锁l 死锁和预防死锁 顺序加锁、超时法、等待图法分布式环境下实现事务和锁,可能出现什么问题?第2章 NoSQL数据库的基本原理2.1 关系型数据库的重要机制回顾 7 2.1.4 关系型数据库的分布式部署 关系型数据库一般部署在单机上,并通过
6、垂直扩展(scale up)方式提升性能 一些关系型数据库也可以实现水平扩展,一般需要通过外部软件、或用户编程等方式实现。l(1)将不同的表存储在不同节点。如果某个表体积过大、或频繁被访问,则其他节点无法提供帮助。l(2)水平分割数据,将表中不同的行存储在不同节点上。在RDBMS中需要保持数据的完整性,插入数据时需要检查所有节点上的数据。索引、锁等机制的维护也较为繁琐。l(3)垂直分割数据,将表中不同的列存储在不同节点上。在大数据场景下,表中的行数可能仍然过多,热点数据可能无法做到负载均衡。也可能遇到和水平分割数据类似的问题。分布式环境下,数据存储存储在不同节点,此时必须通过网络传递相关消息,
7、如果出现网络故障或部分节点失效,则有可能导致整个系统变得低效或死锁,因此在分布式环境下实现高效率的事务机制、以及强一致性等特性较为困难。关系型数据库目前也存在多种横向扩展方案l 横向扩展可以提供负载均衡能力,例如:将数据进行垂直节分或水平切分。l 横向扩展可以提供一定的容错能力,例如:采用读写分离机制。灵活运用上述方案,可以在很多应用场景中解决问题,但是当数据量持续增大时,则可能无法应对。运用上述方案时,用户可能仍需要进行较多的第2章 NoSQL数据库的基本原理2.1 关系型数据库的重要机制回顾 8 2.1.4 关系型数据库的分布式部署 主从集群(读写分离)l 无法解决写数据的瓶颈,但保持了对
8、单机事务的支持l 读数据时,可以实现一定的负载均衡,提高并发性能,并且可以提供一定的容错机制l 一般来说从服务之间是不共享数据的,每台从服务器都保存全集数据,一般不会进行数据分割l 主从服务器之间可能存在数据不一致的隐患第2章 NoSQL数据库的基本原理2.1 关系型数据库的重要机制回顾利用分发服务器实现主从数据同步例如:Microsoft SQL Server提供了“Database Mirroring”、“log shipping”、发布订阅、“always on”等多种读写分离策略 9第2章 NoSQL数据库的基本原理2.1 关系型数据库的重要机制回顾分布式中间件实现关系型数据库的分布式
9、 2.1.4 关系型数据库的分布式部署 分布式中间件 例如:MySQL Fabric、MySQL Cluster、阿里的Cobar(疑似已停止更新)一般可以实现数据水平拆分、容错、数据路由等功能,中间件实现难度较大,中间件实际上承担了NoSQL数据库的大部分功能,关系型数据库只用来实现数据分片的存储,用户配置、使用均较为复杂 系统功能受到一定限制(和单机部署的RDBMS相比)10 2.1.4 关系型数据库的分布式部署 MySQL Fabric方案l MySQL官方方案l 支持水平分片(Shard x)l 支持主从数据库(Primary/Secondary)第2章 NoSQL数据库的基本原理2.
10、1 关系型数据库的重要机制回顾MySQL Fabric的架构图 11 2.1.4 关系型数据库的分布式部署 MySQL Cluster方案l 数据保存在“NDB Cluster”,并尽量将数据写入内存l 表结构保存在“MySQL Server”l 应用程序通过“MySQL Server”访问数据表l 管理客户端通过管理工具(ndb_mgmd)管理“NDB存储服务器”。l 管理配置较为复杂,功能受到一定限制第2章 NoSQL数据库的基本原理2.1 关系型数据库的重要机制回顾MySQL Cluster 12 NoSQL中的数据:结构复杂、数据量大 NoSQL一般采用分布式部署,为保证效率、可靠性等
11、,一方面弱化RDBMS中的部分特性,另一方面哈需要接入分布式部署中遇到的各种难题:l 数据均匀、分布式存储,统一使用、管理数据l 系统可伸缩(横向增加节点或替换故障节点)l 存储和查询任务的容错性l 录入、查询数据时的高性能l 提高系统的易用性第2章 NoSQL数据库的基本原理2.2 分布式数据管理的特点假设某个NoSQL数据库将数据均匀存储在n个节点上,此时可能出现各种难题或故障:如何查看整个集群还有多少存储空间?如何在整个集群不停止工作下,快速、方便的增加节点?或者如何尽量减少增加、删除节点所需的时间和工作量?某个节点出现硬盘故障,如何保证数据不缺失?执行查询任务时,某个节点没有回应,如何
12、保证查询结果没有缺失?13 2.2.1 数据分片 目的l 使数据均匀分布到多个节点上,执行查询或处理任务时,各个节点只查询自身数据,实现并行处理 跨表联合查询性能?由于需要在多个节点之间计算笛卡儿积,因此性能很差,大部分NoSQL并不支持。l 当运行分布式查询或处理任务时,可以每次处理一个分片,将一个分片一次性读入内存例如HBASE(借助于HDFS),将数据分片为64MB-256MB大小。架构l 主从架构:主节点负责存储元数据,和客户端访问接口,从节点负责存储数据分片,如:HBasel 对等结构:无主节点,各个节点都可以接受客户端访问请求,如果自身没有存储相关分片,则去该节点回去向其他节点查询
13、数据,如:Cassandra第2章 NoSQL数据库的基本原理2.2 分布式数据管理的特点 14 2.2.1 数据分片 重要机制l 如果原始数据是一个大型文件(比如TXT换格式的100GB的网站日志文件),则需要将数据切分 大数据工具存储日志类数据时,可以根据自然的行进行切分 数据导入NoSQL之后,可以根据记录的行进行切分l 当节点数量变化时,分片的存储位置等应该可以调整(到其他节点)l 节点对自身存储的分片负责,循环检查数据分片是否健康,节点一般不关心其他节点上分片存储l 切分过程、分片的调整过程等应当是自动的,用户不需要手动处理分片l 用户访问一个接口,即可访问所有数据,用户不需要知道数
14、据属于哪个分片,存储在哪个节点上。问题:如果部分节点出现故障,数据或查询任务是否会出现缺失?如何解决?l 当数据库为单机部署时,不存在系统部分故障的问题,系统要么100%正常,要么100%失效,此时可以通过主备服务器等方式提高系统的可靠性第2章 NoSQL数据库的基本原理2.2 分布式数据管理的特点 15 2.2.2 数据多副本 背景:在大规模分布式系统中,要将部分节点失效视为“常态”,而非异常。此时必须考虑集群系统在局部故障的情况下,也能够正常运行。l 故障可能是临时的,也可能时永久的,例如:节点死机、节点硬盘故障、网络雍塞、交换机故障等 解决:将数据存储为多个副本,不同的副本存储在不同节点
15、上,通常是以数据分片为单位实现多副本。l 相对于原始文件或整个表格,分片的体积较小,容易被检测、拷贝l 理论上n个副本都可以被读取,但n个副本是否可以被更新,则要视系统实现和用户策略而定l 例如:HDFS中,基于“机架感知”的三副本机制。进一步的问题:假设分片被复制了n份,存储在不同节点上,当一个副本被更新时,其他副本如何同步?如果在更新同步时出现临时或永久故障,如何解决?用户是否需要了解,或如何了解副本的同步情况?第2章 NoSQL数据库的基本原理2.2 分布式数据管理的特点 16 2.2.2 数据多副本 进一步的问题:假设分片被复制了n份,存储在不同节点上,当一个副本被更新时,其他副本如何
16、同步?如果在更新同步时出现临时或永久故障,如何解决?用户是否需要了解,或如何了解副本的同步情况?l 如果n个副本只有一个能被更新,则该机制就是“读写分离”,此时,如果“读”副本出现临时故障,则在故障恢复后可以再向主节点查询并同步数据。如果“读”副本出现永久故障,则系统一般会在其他节点上建立新的副本。如果“写”副本出现故障,则系统无法继续更新数据,此时需要通过“选举”等机制,建立一个新的“写”副本。l 如果n个副本都可以被更新,则可能多个副本之间可能存在数据版本”分叉“(冲突),此时需要额外机制检测到分叉,并消除。(参见第六章的Dynamo机制)l 用户是否需要了解副本同步情况,不同的NoSQL
17、系统有不同的策略。第2章 NoSQL数据库的基本原理2.2 分布式数据管理的特点 17 2.2.3 一次写入多次读取(WORM)背景:l 典型的大数据场景,如:搜索引擎抓取网页并抽取正文、链接,并不需要修改抓取的原始网页。网站或物联网应用抓取到日志或监控数据,一般只会进行查询、统计、挖掘,也不需要修改原始数据。l 从系统层面,如果数据不需要修改(update、insert或delete),数据的存储、分片和多副本机制可以大为简化。此外可以实现将分片内数据排序等机制,以加快扫描速度。l 应用一次写入多次读取机制,意味着在系统底层只支持新建和追加(append)。此时系统具有更好的顺序存储特性,对
18、于机械硬盘,顺序读写比随机读写的开销更小,硬件损耗更小,出现碎片的可能性较小(需要配合其他机制,详情可以参考第五章描述的HBASE写入机制)。如何在一个只支持append的存储系统上实现数据更新、插入和删除?l 可以采用时间戳机制。从WORM设计,也可以看出NoSQL应用场景和RDBMS存在差异,相互不可替代。第2章 NoSQL数据库的基本原理2.2 分布式数据管理的特点 18 2.2.4 分布式系统的可伸缩性 背景:分布式系统中可能存在节点故障、以及持续采集数据导致系统容量或处理能力出现瓶颈。目标:l 分布式系统需要提供一种易于操作的增加、移去或替换节点的方法l 节点变动时,数据分片和副本可
19、以自动平衡,空白的新节点会被存入适当的分片副本,移走的节点所负责的数据会被指派给别的节点l 个别节点变动和数据平衡时,对系统服务的影响较小,即节点变化可以动态进行,数据平衡在后台进行(例如:限制数据平衡时使用的带宽,以防止对系统正常服务产生过大影响等)l 节点变化后,用户可以方便的查看当前节点的列表和运行情况第2章 NoSQL数据库的基本原理2.2 分布式数据管理的特点 19 小结:在分布式数据管理中,需要保持集群的高性能、高可靠性和易用性 进行分布式数据管理的主要目的是通过横向扩展提升数据存储、管理、查询和处理性能l 负载均衡:数据分片,并均匀分布在各个节点上;计算本地化,节点只查询自身的数
20、据l 集群可伸缩:集群规模可以随着数据增长进行横向扩展l 将底层存储设置为“一次写入多次读取”,简化大数据场景下的软件设计难度 由于分布式环境中存在部分节点不可达的可能,因此需要保证部分节点出现故障时,系统的其他部分仍可以正常工作;此外故障最终可以被发现和消除l 容错性:数据多副本,副本存储在不同节点上,多副本之间具有同步更新、冲突检测等机制l 集群可伸缩:可以移除故障节点,替换新节点,并实现数据的再平衡 不能要求用户精通分布式系统原理,或者事先了解集群中的大量细节信息才能使用,系统必须易用l 自动管理副本:自动分片、自动检测副本状态、节点的变化,并平衡数据l 统一访问接口:用户通过统一接口即
21、可访问数据,不必预先知道各个节点的信息或集群拓扑等。第2章 NoSQL数据库的基本原理2.2 分布式数据管理的特点 20 目标l 分布式系统中(特别是NoSQL数据库),数据多副本产生的一致性问题l 进一步的目标:各个节点之间对某一主题达成共识(例如:配置信息更新)概念上的差别(CAP和BASE的概念将在随后解释)l ACID中的一致性:强调(一个或多个)事务前后,数据的状态(约束、完整性等)都是有效的。l CAP中的一致性:强调多个副本是状态一致、同步更新的l BASE中的一致性:和ACID中的一致性相近,但强调弱一致性第2章 NoSQL数据库的基本原理2.3 分布式系统的一致性问题 21
22、2.3.1 CAP理论 CAP是指分布式系统中的Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性)。CAP理论是指在分布式系统中,CAP三个特性不可兼得,只能同时满足两个。和RDBMS中的ACID相比较的原因是,理论上分布式系统中多副本的更新应该是一个“事务”,要么都成功,要么都失败,并且性能很好,但实际上存在难题。一些分布式系统可以实现分布式事务(当前大多数NoSQL系统不支持,或不能良好支持),即可以提供跨节点的ACID。CAP则是强调集群环境下,数据多副本带来的问题,此时二者讨论的主题不同。第2章 NoSQL数据库的
23、基本原理2.3 分布式系统的一致性问题CAP理论可参考:Brewers Conjecture and the Feasibility of Consistent,Available,Partition-Tolerant Web Services 22 2.3.1 CAP理论 Consistency(一致性),是指分布式系统中所有节点都能对某个数据达成共识,例如:多个副本内容是否相同,当出现不一致时,以哪个副本为准。Availability(可用性),这里可以理解为分布式系统的响应速度,或响应能力。Partition tolerance(分区容错性),指在部分节点故障、以及出现消息丢包的情况下,
24、集群系统(的剩余部分)仍然可以提供服务,完成数据访问,这一般需要通过合理的数据多副本机制实现。CAP不能兼顾,但并非绝对对立。l 在实际NoSQL系统中,一般通过设计上的取舍和使用过程中的配置,在A和C之间进行权衡l 对于大多数分布式系统,P是必须的l 在系统设计层面,或系统的模块设计层面,以及在不同的业务场景下,都可能采用不同取舍策略或配置策略第2章 NoSQL数据库的基本原理2.3 分布式系统的一致性问题 23 2.3.1 CAP理论 假设系统中,数据只有一个副本。则一致性(C)可以得到绝对的保障,由于在读写时不需要通过网络查询其他副本的情况,因此读写性能较高(A),但如果存储数据的节点故
25、障则无法容错,即该设计兼顾CA。假设系统中,数据存在n个副本,但采用“读写分离”机制,只有一个副本可以接受写请求。此时:l 对于写操作,一致性和可用性较好,因为只要写完一个副本,操作即为成功,但此时该写入节点无法实现分区可用性,即兼顾CA。l 对于读操作,假设数据存在多个“只读”副本,客户端每次只读取其中一个,则该设计实现了读操作的分区可用性(多副本),可用性较好,但客户端无法判断该副本是否为最新的(考虑网络通信的不确定性),即只兼顾了PA。l 对于读操作,假设客户端需要同时读取多个副本,并对比这些副本,以检查是否存在版本差异或版本冲突。则此时兼顾了PC,由于需要读取多个副本,因此客户端响应时
展开阅读全文