ImageVerifierCode 换一换
格式:PPT , 页数:45 ,大小:1.80MB ,
资源ID:1399051      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1399051.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MongoDB由浅入深.ppt)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MongoDB由浅入深.ppt

1、技术交流 廖诚,2022/10/22,1,议题,什么是NoSQL?为什么要用NoSQL?MongoDB是什么?谁在用MongoDB?MongoDB部署架构MongoDB内部数据结构MongoDB简单应用,2,什么是NoSQL?,NoSQL是Not Only SQL的缩写,而不是Not SQL,它不一定遵循传统数据库的一些基本要求,如SQL标准、ACID属性、表结构等。相比传统数据库,叫它分布式数据管理系统更贴切,数据存储被简化更灵活,重点被放在了分布式数据管理上。,3,什么是NoSQL?,关系数据库的表结构(学生、地址、成绩、科目):,4,什么是NoSQL?,NoSQL的表结构(学生、地址、成

2、绩、科目):,5,什么是NoSQL?,相对应表中一条文档视图:,6,什么是NoSQL?,相对应表中一条文本视图:,7,为什么要用NoSQL?,大数据的特征Volume-数据量巨大,对TB、PB数据级的处理,已经成为基本要求。Variety-数据多样性,能处理结构化、非结构化数据,能处理Web数据,甚至语音、图像、视频数据。Velocity-数据实时性,在客户每次浏览页面,下订单的过程中,都会对用户进行实时的产品推荐,购买决策已经变得非常实时。,8,为什么要用NoSQL?,大数据的性能要求High performance-高并发读写,高并发、实时动态数据查询和修改。Huge Storage-海量

3、数据的高效存储和访问,类似SNS网站,海量用户信息的高效、实时存储和查询。High Scalability&High Availability-高可扩展性和高可用性,需要拥有快速横向扩展能力、提供7*24小时不间断服务。,9,为什么要用NoSQL?,关系数据库处理大数据的弱势面对高并发读写的需求,数据库读写压力巨大,硬盘IO无法承受。面对海量数据,数据库能存储的记录数量有限,SQL查询效率极低。横向扩展艰难,无法通过快速增加服务器节点实现,系统升级和维护造成服务不可用。,10,为什么要用NoSQL?,NoSQL处理大数据的优势数据库结构简单,数据间无关系性,这自然就带来了很高的读写性能,且易扩

4、展。灵活的数据模型,可以随时存储自定义的数据格式。而在关系数据库里,增删字段是件麻烦的事。尤其大数据量的表,增加字段简直就是一个噩梦。通过复制模型可实现高可用性,可以分布部署在低廉的PC集群上。支持动态增加、删除服务器节点,随时控制硬件投入成本。,11,MongoDB是什么?,MongoDB简介一个分布式文件存储数据库,由C+语言编写的开源项目。一个NoSQL中,功能最丰富、最像关系数据库的产品。它支持的数据结构非常松散,是类似JSON的BSON格式,因此可以存储比较复杂的数据模型。它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,而且还支持索引、MapReduce等功能。,12,

5、MongoDB是什么?,MongoDB主要特点高性能、易部署、易使用,存储数据方便。模式自由,支持动态查询、完全索引、文档内嵌查询。面向文档,以K/V形式存储数据,Key用于唯一标识,而Value则可以是各种复杂的数据类型。支持主/从服务器间的数据复制和故障恢复。自动分片,以支持云级别的服务伸缩性,可动态添加、删除额外的服务器。,13,MongoDB是什么?,MongoDB支持的数据类型布尔 ture|false整数 123浮点 12.3字符串 hello world对象ID 用new ObjectId()来声明日期 用new Date()来声明时间戳数组 apple,banana,pear内

6、嵌文档 name:Joe,age:13,phone:home:123,moblie:456RegExp 正则表达式/a-f/,14,MongoDB是什么?,MongoDB适用场景网站动态数据,需要实时的插入,更新与查询。可以做高性能的持久化缓存层。存储大尺寸,低价值的数据。高伸缩性的集群场景。文档化结构的数据存储及查询。,15,谁在用MongoDB?,16,谁在用MongoDB?,17,MongoDB部署架构,Replica Sets架构图,Primary,Secondary-1,Secondary-2,.,18,MongoDB部署架构,Replica Sets角色介绍Primary主服务器,

7、写操作只能在其身上发生,通过保存操作日志(oplog),然后将数据同步到多个 Secondary 上。Secondary从服务器,热机备份主服务器上的数据,分担主机读压力,当主机发生故障不能工作,随时待命接管主机工作。,19,MongoDB部署架构,主/从服务器间数据同步图,20,MongoDB部署架构,主/从服务器间数据同步介绍红色箭头表示数据只能写到主机上,然后再同步到多个从机上。蓝色箭头表示数据可以从主机或从机任意一个上读。各个主机与从机之间,通过心跳包检测机制,同步彼此之间的状态。,21,MongoDB部署架构,Sharding集群架构图,22,MongoDB部署架构,Sharding

8、集群架构角色介绍Shard Server-mongod实例,存储实际数据的模块。Config Server-mongod实例,存储集群的元数据,如分片信息、数据块映射等。Route Server-mongos实例,客户端访问路由(统一接入点),查询优化,数据合并、排序、裁剪,请求推送等。,23,MongoDB部署架构,Sharding机制图,24,MongoDB部署架构,Sharding是什么?分片是指将数据拆分,将其分散到不同服务器上的过程。通过分片能够增加更多的服务器,来应对不断增加的负载和数据。MongoDB何时需要分片?机器的磁盘不够用。单个mongod服务已经不能满足写数据的性能需求

9、。想将大量的数据放在内存中提高性能。,25,MongoDB部署架构,MongoDB怎么分片?指定一个key来进行分片,按key的范围将数据存放到多个chunk上,每个chunk的大小有限制。这些chunk分散保存在多个分片节点上。每个分片节点可以是单个mongod服务,也可以是一个Replica Sets,后者可以实现数据的热备份。当一个chunk超过其限制的最大体积时,会自动分裂成两个小的chunk。当chunk在分片节点中分布不均衡时,会自动引发chunk迁移操作。,26,MongoDB部署架构,一个分片例子如上文students集合,如果选择“_id”作为片键,则第一片存放学号从1100

10、的文档,第二片存放学号从101200的文档,第三片存放学号从201300的文档。,“1”,“100”Shard1,“101”,“200”Shard2,“201”,“300”Shard3,27,MongoDB部署架构,Sharding服务角色图,28,MongoDB部署架构,Sharding服务角色介绍config服务器保存了两个映射关系,一个是key区间的数据都存放在那些chunk上的映射关系,另一个是chunk都存放在哪些分片节点上的映射关系。客户端统一访问路由节点mongos,来进行数据操作。路由节点先访问config服务器获取信息,找到数据真正存放位置,然后再对其进行操作。,29,Mon

11、goDB部署架构,Sharding服务角色介绍路由节在写数据时,还会判断当前chunk是否超出限定大小,如果是就将其分裂成两个chunk。对于按分片key进行的数据查询,路由节点会查到具体数据存储位置,然后再进行相关的工作。对于不按分片key进行的数据查询,路由节点会把操作发给所有分片,然后再对返回结果进行合并、排序等。,30,MongoDB内部数据结构,在文件系统中的存储形式MongoDB会给每个数据库预分配大小逐渐增长的文件集。文件集序号依次为0,1,2.,大小依次是64M,128M,256M,512M,1G,2G,然后就一直是2G的创建下去(32位系统最大到512M)。文件集在内部会被切

12、分成多个数据域,数据域之间使用双向链表连接。不同数据域的存储类别用名字空间区分,如每个集合有自己独立的名字空间,每个索引也有自己独立的名字空间。,31,MongoDB内部数据结构,名字空间与数据域的关系,32,MongoDB内部数据结构,名字空间与数据域的关系每个名字空间可以有不同的数据域,且在磁盘上不必连续。图中还有一个特殊的名字空间freelist,存放着不再使用的数据域,如删除集合或索引产生的数据域。当名字空间分配新的数据域时,会先查找空闲列表,看看是否有适合大小的数据域可用。索引数据也保存在数据域中,其结构被组织成B-Tree形式。在每一个数据域中,保存了具体一行行BSON格式的数据。

13、,33,MongoDB内部数据结构,对每一个域来说,其头部包含了一些元数据,比如自己的位置,上一个域和下一个域的位置,,34,MongoDB内部数据结构,域中第一条和最后一条数据记录的位置,剩下的部分用于存储具体的数据。,35,MongoDB内部数据结构,名字空间与数据域的关系对于每个数据库,都有一个名字空间文件“dbname.ns”。在名字空间文件中,保存的是一个哈希表,存储了每个名字空间的元数据,包括其大小,域数,第一个域位置,最后一个域位置,被删除的域的链表、索引信息等,如下图:,36,MongoDB内部数据结构,37,MongoDB简单应用,MongoDB读操作WHERE#select

14、*from students where name=Joe db.students.find(name:Joe)FIELDS#select name,age from students where age=33 db.students.find(age:33,name:1,age:1)#select name,age from students db.students.find(,name:1,age:1),38,MongoDB简单应用,MongoDB读操作SORT#select*from students order by age db.students.find().sort(age:1)

15、#select*from students order by sex asce,age desc db.students.find().sort(sex:1,age:-1)SLICE#select*from students skip 2 limit 3 db.students.find().skip(2).limit(3)#select*from students where sex=male and age 18 and age db.students.find(sex:“male”,age:$gt:18,$lt:30)比较操作对比:$gt()、$lt(=)、$lte(=)、$ne(!=)

16、,39,MongoDB简单应用,MongoDB读操作IN#select*from students where age in(18,28)db.students.find(age:$in:18,28)#select*from students where age not in(18,28)db.students.find(age:$nin:18,28)COUNT#select count(*)from students where age 18 db.students.find(age:$gt:18).count()OR#select*from students where age=18 or age=28 db.students.find($or:age:18,age:28),40,MongoDB简单应用,MongoDB写操作INSERT#insert into students value()db.students.insert(name:Jeremy,sex:male,age:88)UPDATE#update students set age=100,sex=0 where na

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1