书签 分享 收藏 举报 版权申诉 / 43
上传文档赚钱

类型MongoDB概述及存储结构课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2491361
  • 上传时间:2022-04-25
  • 格式:PPT
  • 页数:43
  • 大小:3.37MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《MongoDB概述及存储结构课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    MongoDB 概述 存储 结构 课件
    资源描述:

    1、mongoDB的概述与存储结构汇报人:汇报人:2022-4-25101第一章第一章 mongoDB概述概述02第二章第二章 存储体系结构存储体系结构背后的故事背后的故事硬实力硬实力软实力软实力Contents目目录录崛起的法宝崛起的法宝2022-4-252背后的故事1崛起的法宝2第一章 mongoDB概述2022-4-253背后的故事Web2.0来袭1.互联网应用用户量剧增互联网应用用户量剧增2.数据量呈几何级数增长数据量呈几何级数增长3.高并发的读写高并发的读写2022-4-254背后的故事RDBMS的困境1.数据库并发负载高数据库并发负载高2.海量数据存储和访问海量数据存储和访问3.数据库

    2、数据越来越大数据库数据越来越大4.事务管理的负担事务管理的负担5.对关系型数据库读对关系型数据库读/写实时性的忽略写实时性的忽略6.多表关联查询被弱化多表关联查询被弱化 2022-4-255背后的故事NoSQL的崛起NoSQL全称是全称是Not Only Sql,指的是非关系型的数据库。,指的是非关系型的数据库。NoSQL数据库主要数据库主要应用于应用于web2.0的大规模系统,具有模式灵活、最终一致性、面向海量数据、的大规模系统,具有模式灵活、最终一致性、面向海量数据、分布式、开源、水平可扩展、配置简单、非关系型等特点。分布式、开源、水平可扩展、配置简单、非关系型等特点。存储类型存储类型No

    3、SQL产品产品特性特性列式存储Hbase、CassandraHypertable按列存储数据,最大的特点是方便存储结构和半结构化数据,方便做数据压缩,针对某一列或者某几列的查询有非常大的 I/O 优势键值存储Redis、TokyoCabinetTokyo Tyrant、Flare可以通过键快速查询到值。一般来说,存储不管值的格式,照单全收文档式存储MongoDB、CouchDB文 档 存 储 一 般 用 类 似JSON 格式存储,存储的内容是文档类型的,这样也就有机会对某些字段建立索引,实现关系型数据库的某些功能对象式存储db4oVersant通过类似面向对象语言的语法操作数据库,通过对象的方

    4、式存取数据2022-4-256背后的故事mongoDB的前世今生1. 2007年年10月,月,MongoDB由由10gen团队所发展,团队所发展,2009年年2月月首度推出首度推出2. MongoDB是一个介于关系数据库和非关系数据库之间的是一个介于关系数据库和非关系数据库之间的产品产品3. MongoDB 是由是由C+语言编写的开源数据库系统语言编写的开源数据库系统4. MongoDB服务端可运行在服务端可运行在Linux、Windows或或OS X平台,平台,支持支持32位和位和64位应用位应用2022-4-257崛起的法宝vs RDBMS2022-4-258崛起的法宝数据模型MongoD

    5、B 数据库是一个面向集合且模式自由的文档类型数据库。数据库是一个面向集合且模式自由的文档类型数据库。1. 面向集合面向集合面面 向向 集集 合合 是是 指指 数数 据据 被被 分分 组组 存存 在在 在在 数数 据据 集集 中中 , 被被 称称 为为 一一 个个 集集 合合(Collencton=table)。集合类似于关系型数据库的表()。集合类似于关系型数据库的表(table) ,不同于表的不同于表的是,集合不需要定义任何模式,集合在存储文档,一个文档类似于关系型数是,集合不需要定义任何模式,集合在存储文档,一个文档类似于关系型数据库的一条记录。在据库的一条记录。在 MongoDB 中,要

    6、操作一个表并不需要创建它,可以直接中,要操作一个表并不需要创建它,可以直接往集合中插入数据,如果集合不存在,它会自动创建这个集合。往集合中插入数据,如果集合不存在,它会自动创建这个集合。2. 模式自由模式自由模式自由就是对存储在模式自由就是对存储在 MongoDB 数据库中的数据,我们不需要知道它是什么数据库中的数据,我们不需要知道它是什么结构(可以是任何的文档)。结构(可以是任何的文档)。3. 文档型文档型文档型存储的数据是键值对的集合,键是字符串,值可以是数据类型集合中文档型存储的数据是键值对的集合,键是字符串,值可以是数据类型集合中的任意类型,包括数组和文档。我们把这个数据格式称为的任意

    7、类型,包括数组和文档。我们把这个数据格式称为 BSON (Binary Serialized Document Notation)2022-4-259崛起的法宝功能性1.完整的索引支持:可以对文档创建索引,甚至还可以对内嵌文档以及数组完整的索引支持:可以对文档创建索引,甚至还可以对内嵌文档以及数组创建索引。创建索引。MongoDB 的查询优化器会自动分析查询语句,然后生成一个高的查询优化器会自动分析查询语句,然后生成一个高效的查询集合。效的查询集合。2.动态查询:动态查询: MongoDB 的查询指令使用的查询指令使用 JSON 形式,使查询表达式变得非常形式,使查询表达式变得非常丰富,还可以

    8、非常容易地查询文档中的内嵌对象和数组。丰富,还可以非常容易地查询文档中的内嵌对象和数组。3.查询监视:查询监视: MongoDB 提供了很多性能监视工具,用于分析数据库操作的提供了很多性能监视工具,用于分析数据库操作的性能。性能。 2022-4-2510崛起的法宝功能性(续)4.复制及自动故障转移:复制及自动故障转移:MongoDB 数据库支持服务器之间的复制,从节点可以复数据库支持服务器之间的复制,从节点可以复制主节点的数据,主节点的所有对数据的操作都会同步到从节点。从节点的数据制主节点的数据,主节点的所有对数据的操作都会同步到从节点。从节点的数据跟主节点的数据是完全一样的,以作备份。主节点

    9、发生故障之后,从节点可以升跟主节点的数据是完全一样的,以作备份。主节点发生故障之后,从节点可以升级为主节点,也可以通过从节点对故障主节点进行数据恢复。级为主节点,也可以通过从节点对故障主节点进行数据恢复。5.高效地传统存储方式:支持二进制数据及大型对象(如视频),可以高效地传统存储方式:支持二进制数据及大型对象(如视频),可以将图片文件甚至视频转换成二进制的数据存储到数据库中。将图片文件甚至视频转换成二进制的数据存储到数据库中。6.自动分片以支持云级别的伸缩性:自动分片以支持云级别的伸缩性: 可以水平扩展数据库集群,动态添可以水平扩展数据库集群,动态添加片(服务器)。加片(服务器)。2022-

    10、4-2511崛起的法宝其他招式1.拓展功能强大2.便于管理3.适用于多种场合2022-4-2512硬实力1软实力2第二章 存储结构2022-4-2513HDDSSD随机访问(IOPS)12512000 (100 x)顺序读写(Throughput)100MB/s200MB/s (2x)VS.硬实力磁盘数据的存储总离不开磁盘,因此数据的存储总离不开磁盘,因此mongodb的数据存储设备当然也只能是磁的数据存储设备当然也只能是磁盘。官方建议采用盘。官方建议采用SSD固态硬盘。固态硬盘。mongodData fileSSD Journal HDDLog HDD优化的IO部署方案数据IO:随机访问为主

    11、 x: 12 DiskLoc: xxRead: DiscLoc: xxDisckLoc: xx123无冗余写性能一般写入速度慢条带化+镜像性能好 + 数据冗余建议的RAID Level硬实力存储引擎存储引擎是数据库管理系统的一个重要组成部分。它的主要职责就是负责存储引擎是数据库管理系统的一个重要组成部分。它的主要职责就是负责把数据存储到硬盘和把数据从硬盘检索出来。把数据存储到硬盘和把数据从硬盘检索出来。MySQLMySQL和和RiakRiak均支持多个不均支持多个不同的存储引擎。不同的存储引擎对不同的应用需求有特别的优化。如某个同的存储引擎。不同的存储引擎对不同的应用需求有特别的优化。如某个存

    12、储引擎可以是专为高并发写设计的,而另一个则是为高压缩率设计从而存储引擎可以是专为高并发写设计的,而另一个则是为高压缩率设计从而达到节省磁盘空间的目标。达到节省磁盘空间的目标。mongoDBmongoDB默认采用的存储引擎是操作系统底层提供的内存映射文件(默认采用的存储引擎是操作系统底层提供的内存映射文件(MMAPMMAP)(至今也只有一种)。(至今也只有一种)。2022-4-2518硬实力内存映射物理内存物理内存010000硬盘硬盘480200480虚拟内存虚拟内存100000200 mmap()Page fault, 10ms页面不在内存,缺页中断 10ms页面已在内存, 50us1234硬

    13、实力故障恢复u复制集一个典型的集群结构如下:Shards每一个shard包括一个或多个服务和存储数据的mongod进程(mongod是MongoDB数据的核心进程),典型的每个shard开启多个服务来提高服务的可用性。这些服务/mongod进程在shard中组成一个复制集。硬实力负载均衡2022-4-2521软实力数据类型null 布尔布尔 ture|false整数整数 123浮点浮点 12.3字符串字符串 “hello world”对象对象ID 用 new ObjectId()来申明。 日期日期 用 new Date()来申明时间戳时间戳数组数组 “apple”,”blanan”,”pear

    14、”内嵌文档内嵌文档 “username” : “jone”, “age”: 13, “contact” : “home”:”123”,”moblie”:”456”RegExp 正则表达式 /a-z/2022-4-2522数字型表示MongoDB对整型数字的存储分两个级别,一个32位的,一是64位的。浮点数MongoDB仅支持64位的双精度浮点数。整数表示法:64位浮点数表示法:0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001mongo内部内部, 所有数字都是用所有数字都是用long存储

    15、存储, 所以单个数字是所以单个数字是8字节字节2022-4-2523字符型表示MongoDB的所有字符均采用UTF-8编码。UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。2022-4-2524日期表示日期类型存储是从标准纪元开始的毫秒数,不存储时区。JavaScript中,Date对象用作MongoDB的日期类型,由于JavaScript本身的特性,创建一个Date对象时,通常

    16、会调用new Date()而不是使用Date()。因为调用Date()实际返回的是对日期的字符串表示,而不是真正的Date对象。格式:“date”:new Date() 2022-4-2525ObjectID详解不同的机器都能用全局唯一的同种方法方便的生成它。ObjectId使用12字节的存储空间,其生成方式如下:4e931cb6edcd881e1900017f时间戳 机器ID PID 计数器时间戳保证秒级唯一,机器ID保证设计时考虑分布式,避免时钟同步,PID保证同一台服务器运行多个mongod实例时的唯一性,最后的计数器保证同一秒内的唯一性。2022-4-2526字符串表示由于字符采用的U

    17、TF-8编码,目的就是为了实现字符串的可变格式和可变长度。0标识字符 串长度字符串内容参考:http:/ = 长度长度(4字节字节) + 字符串字符串(n字节字节) + (1字节字节)2022-4-2527BSON格式存储例:a:12BSON结构如下: Len | vtype |key|0| v | E 长度 | value类型 | key |0 | value|结束符号 4| 1 | 1 |1| 2 |1 = 10字节2022-4-2528软实力文件在MongoDB内部,每个数据库都包含一个.ns文件和一些数据文件,而且这些数据文件会随着数据量的增加而变得越来越多。所以如果系统中有一个叫做t

    18、est的数库,那么构成test这个数据库的文件就会由test.ns,test.0,test.1等等组成。其中*.ns是包含命名空间的文件,保存该数据库数据的相关信息。*.0和*.1是数据文件。32位系统的MongoDB服务器每一个Mongod实例只能使用2G的数据文件。这是由于地址指针只能支持32位。2022-4-2529命名空间在数据文件内部,每个数据库都是按照命名空间组织的,一种类别的数据与其他类别的分开存放。每个集合的文档都有自己的命名空间,索引也是。命名空间的元数据存放在数据库的 .ns 文件中。每个命名空间的数据都被分成若干组,放到数据文件的某一区域内,这个区域称为数据域。在图 中可

    19、以看到数据库 foo 有 3 个数据文件,其中第 3 个是预分配的空文件。前两个数据文件被分成几个数据域,属于几个不同的命名空间。2022-4-2530软实力存储过程2022-4-2531下图展示了数据库是如何跟底层系统打交道的虚拟地址空间2022-4-2532内部文件格式在名字空间文件中,保存了每个名字空间的存储信息元数据,包括其大小,块数,第一块位置,最后一块位置,被删除的块的链表以及索引信息2022-4-2533块结构各个Extent(块)采用双链表的形式连接2022-4-2534块和记录各个文档数据也是采用双链表的形式连接2022-4-2535块相关特性1.每一条记录在块内从4的倍数的

    20、字节处开始2.块的大小不会动态扩增3.尽量数据不跨块,但若记录的大小大于一个块的大小,必然会跨块4.相似记录计量保持在同一个块中2022-4-2536软实力选择查询MySQL: SELECT * FROM userMongo: db.user.find()MySQL: SELECT * FROM user WHERE name = foobarMongo: db.user.find(name : foobar)2022-4-2537MySQL: INSERT INTO user (name, age) values (foobar,25)Mongo: db.user.insert(name :

    21、 foobar, age : 25)if you want add a column email on MySQL,you must : ALTER TABLE user.But in Mongo,you can just: db.user.insert(name : foobar, age : 25, email : )软实力插入2022-4-2538 MongoDB在执行插入时,首先,会将插入的数据转换成BSON格式;然后,MongoDB数据库会对BSON进行解析,并且检查是否存在“_id”键(_id键在插入数据库时MongoDB会自动生成)。MongoDB还对文档的大小做了限制。1.8之

    22、前的版本,文档不能超过4MB;1.8之后的版本支持16MB。除了这些之外,没有别的数据校验,就是简单的将文档原样存入数据库中。这样做的坏处是允许插入无限数据;好处就是不会受到注入式攻击,让数据库更加安全。 MongoDB在记录长度变化后,发现当前记录所在空间后面没有空余的空间可供其变长。那么这条记录就会被删除然后移动到数据集的最后。 2022-4-2539MySQL: DELETE * FROM userMongo: db.user.remove()MySQL: DELETE FROM user WHERE age ; $gte : = ; $lt : ; $lte : = ; $ne : !

    23、=软实力删除2022-4-2540删除原理位置通过位置通过 DiskLoc 数据结构进行存储,存储了数据文件编号和块在文件中的数据结构进行存储,存储了数据文件编号和块在文件中的位置,删除的块或者域都会在位置,删除的块或者域都会在DletedList中标记,并不是直接抹掉。中标记,并不是直接抹掉。2022-4-2541MySQL: UPDATE user SET age = 36 WHERE name = foobarMongo: db.user.update(name : foobar, $set : age : 36)MySQL: UPDATE user SET age = age + 3 WHERE name = foobarMongo: db.user.update(name : foobar, $inc : age : 3)软实力更新2022-4-25422022-4-2543

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:MongoDB概述及存储结构课件.ppt
    链接地址:https://www.163wenku.com/p-2491361.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库