MongoDB概述及存储结构.ppt_第1页
MongoDB概述及存储结构.ppt_第2页
MongoDB概述及存储结构.ppt_第3页
MongoDB概述及存储结构.ppt_第4页
MongoDB概述及存储结构.ppt_第5页
免费预览已结束,剩余38页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

mongoDB的概述与存储结构 汇报人 2020 3 25 1 01 第一章mongoDB概述 02 第二章存储体系结构 背后的故事 硬实力 软实力 Contents 目 录 崛起的法宝 2020 3 25 2 背后的故事 1 崛起的法宝 2 第一章mongoDB概述 2020 3 25 3 背后的故事 Web2 0来袭 1 互联网应用用户量剧增2 数据量呈几何级数增长3 高并发的读写 2020 3 25 4 背后的故事 RDBMS的困境 1 数据库并发负载高2 海量数据存储和访问3 数据库数据越来越大4 事务管理的负担5 对关系型数据库读 写实时性的忽略6 多表关联查询被弱化 2020 3 25 5 背后的故事 NoSQL的崛起 NoSQL全称是NotOnlySql 指的是非关系型的数据库 NoSQL数据库主要应用于web2 0的大规模系统 具有模式灵活 最终一致性 面向海量数据 分布式 开源 水平可扩展 配置简单 非关系型等特点 2020 3 25 6 背后的故事 mongoDB的前世今生 2007年10月 MongoDB由10gen团队所发展 2009年2月首度推出MongoDB是一个介于关系数据库和非关系数据库之间的产品MongoDB是由C 语言编写的开源数据库系统MongoDB服务端可运行在Linux Windows或OSX平台 支持32位和64位应用 2020 3 25 7 崛起的法宝 vsRDBMS 2020 3 25 8 崛起的法宝 数据模型 MongoDB数据库是一个面向集合且模式自由的文档类型数据库 1 面向集合面向集合是指数据被分组存在在数据集中 被称为一个集合 Collencton table 集合类似于关系型数据库的表 table 不同于表的是 集合不需要定义任何模式 集合在存储文档 一个文档类似于关系型数据库的一条记录 在MongoDB中 要操作一个表并不需要创建它 可以直接往集合中插入数据 如果集合不存在 它会自动创建这个集合 2 模式自由模式自由就是对存储在MongoDB数据库中的数据 我们不需要知道它是什么结构 可以是任何的文档 3 文档型文档型存储的数据是键值对的集合 键是字符串 值可以是数据类型集合中的任意类型 包括数组和文档 我们把这个数据格式称为BSON BinarySerializedDocumentNotation 2020 3 25 9 崛起的法宝 功能性 1 完整的索引支持 可以对文档创建索引 甚至还可以对内嵌文档以及数组创建索引 MongoDB的查询优化器会自动分析查询语句 然后生成一个高效的查询集合 2 动态查询 MongoDB的查询指令使用JSON形式 使查询表达式变得非常丰富 还可以非常容易地查询文档中的内嵌对象和数组 3 查询监视 MongoDB提供了很多性能监视工具 用于分析数据库操作的性能 2020 3 25 10 崛起的法宝 功能性 续 4 复制及自动故障转移 MongoDB数据库支持服务器之间的复制 从节点可以复制主节点的数据 主节点的所有对数据的操作都会同步到从节点 从节点的数据跟主节点的数据是完全一样的 以作备份 主节点发生故障之后 从节点可以升级为主节点 也可以通过从节点对故障主节点进行数据恢复 5 高效地传统存储方式 支持二进制数据及大型对象 如视频 可以将图片文件甚至视频转换成二进制的数据存储到数据库中 6 自动分片以支持云级别的伸缩性 可以水平扩展数据库集群 动态添加片 服务器 2020 3 25 11 崛起的法宝 其他招式 1 拓展功能强大2 便于管理3 适用于多种场合 2020 3 25 12 硬实力 1 软实力 2 第二章存储结构 2020 3 25 13 VS 硬实力 磁盘 数据的存储总离不开磁盘 因此mongodb的数据存储设备当然也只能是磁盘 官方建议采用SSD固态硬盘 mongod DatafileSSD JournalHDD LogHDD 优化的IO部署方案 数据IO 随机访问为主 x 12 DiskLoc xx Read DiscLoc xx DisckLoc xx 无冗余 写性能一般 写入速度慢 条带化 镜像性能好 数据冗余 建议的RAIDLevel 硬实力 存储引擎 存储引擎是数据库管理系统的一个重要组成部分 它的主要职责就是负责把数据存储到硬盘和把数据从硬盘检索出来 MySQL和Riak均支持多个不同的存储引擎 不同的存储引擎对不同的应用需求有特别的优化 如某个存储引擎可以是专为高并发写设计的 而另一个则是为高压缩率设计从而达到节省磁盘空间的目标 mongoDB默认采用的存储引擎是操作系统底层提供的内存映射文件 MMAP 至今也只有一种 2020 3 25 18 硬实力 内存映射 硬实力 故障恢复 复制集 一个典型的集群结构如下 Shards每一个shard包括一个或多个服务和存储数据的mongod进程 mongod是MongoDB数据的核心进程 典型的每个shard开启多个服务来提高服务的可用性 这些服务 mongod进程在shard中组成一个复制集 硬实力 负载均衡 2020 3 25 21 软实力 数据类型 null布尔ture false整数123浮点12 3字符串 helloworld 对象ID用newObjectId 来申明 日期用newDate 来申明时间戳数组 apple blanan pear 内嵌文档 username jone age 13 contact home 123 moblie 456 RegExp正则表达式 a z 2020 3 25 22 数字型表示 MongoDB对整型数字的存储分两个级别 一个32位的 一是64位的 浮点数MongoDB仅支持64位的双精度浮点数 整数表示法 64位浮点数表示法 0000000000000000000000000000000000000000000000000000000000000001 mongo内部 所有数字都是用long存储 所以单个数字是8字节 2020 3 25 23 字符型表示 MongoDB的所有字符均采用UTF 8编码 UTF 8 8 bitUnicodeTransformationFormat 是一种针对Unicode的可变长度字符编码 又称万国码 由KenThompson于1992年创建 现在已经标准化为RFC3629 UTF 8用1到6个字节编码UNICODE字符 2020 3 25 24 日期表示 日期类型存储是从标准纪元开始的毫秒数 不存储时区 JavaScript中 Date对象用作MongoDB的日期类型 由于JavaScript本身的特性 创建一个Date对象时 通常会调用newDate 而不是使用Date 因为调用Date 实际返回的是对日期的字符串表示 而不是真正的Date对象 格式 date newDate 2020 3 25 25 ObjectID详解 不同的机器都能用全局唯一的同种方法方便的生成它 ObjectId使用12字节的存储空间 其生成方式如下 4e931cb6edcd881e1900017f时间戳机器IDPID计数器时间戳保证秒级唯一 机器ID保证设计时考虑分布式 避免时钟同步 PID保证同一台服务器运行多个mongod实例时的唯一性 最后的计数器保证同一秒内的唯一性 2020 3 25 26 字符串表示 由于字符采用的UTF 8编码 目的就是为了实现字符串的可变格式和可变长度 参考 LEN n 5 长度 4字节 字符串 n字节 1字节 2020 3 25 27 BSON格式存储 例 a 12 BSON结构如下 Len vtype key 0 v E长度 value类型 key 0 value 结束符号4 1 1 1 2 1 10字节 2020 3 25 28 软实力 文件 在MongoDB内部 每个数据库都包含一个 ns文件和一些数据文件 而且这些数据文件会随着数据量的增加而变得越来越多 所以如果系统中有一个叫做test的数库 那么构成test这个数据库的文件就会由test ns test 0 test 1等等组成 其中 ns是包含命名空间的文件 保存该数据库数据的相关信息 0和 1是数据文件 32位系统的MongoDB服务器每一个Mongod实例只能使用2G的数据文件 这是由于地址指针只能支持32位 2020 3 25 29 命名空间 在数据文件内部 每个数据库都是按照命名空间组织的 一种类别的数据与其他类别的分开存放 每个集合的文档都有自己的命名空间 索引也是 命名空间的元数据存放在数据库的 ns文件中 每个命名空间的数据都被分成若干组 放到数据文件的某一区域内 这个区域称为数据域 在图中可以看到数据库foo有3个数据文件 其中第3个是预分配的空文件 前两个数据文件被分成几个数据域 属于几个不同的命名空间 2020 3 25 30 软实力 存储过程 2020 3 25 31 下图展示了数据库是如何跟底层系统打交道的 虚拟地址空间 2020 3 25 32 内部文件格式 在名字空间文件中 保存了每个名字空间的存储信息元数据 包括其大小 块数 第一块位置 最后一块位置 被删除的块的链表以及索引信息 2020 3 25 33 块结构 各个Extent 块 采用双链表的形式连接 2020 3 25 34 块和记录 各个文档数据也是采用双链表的形式连接 2020 3 25 35 块相关特性 1 每一条记录在块内从4的倍数的字节处开始2 块的大小不会动态扩增3 尽量数据不跨块 但若记录的大小大于一个块的大小 必然会跨块4 相似记录计量保持在同一个块中 2020 3 25 36 软实力 选择查询 MySQL SELECT FROMuserMongo db user find MySQL SELECT FROMuserWHEREname foobar Mongo db user find name foobar 2020 3 25 37 MySQL INSERTINTOuser name age values foobar 25 Mongo db user insert name foobar age 25 ifyouwantaddacolumn email onMySQL youmust ALTERTABLEuser ButinMongo youcanjust db user insert name foobar age 25 email foo 软实力 插入 2020 3 25 38 MongoDB在执行插入时 首先 会将插入的数据转换成BSON格式 然后 MongoDB数据库会对BSON进行解析 并且检查是否存在 id 键 id键在插入数据库时MongoDB会自动生成 MongoDB还对文档的大小做了限制 1 8之前的版本 文档不能超过4MB 1 8之后的版本支持16MB 除了这些之外 没有别的数据校验 就是简单的将文档原样存入数据库中 这样做的坏处是允许插入无限数据 好处就是不会受到注入式攻击 让数据库更加安全 MongoDB在记录长度变化后 发现当前记录所在空间后面没有空余的空间可供其变长 那么这条记录就会被删除然后移动到数据集的最后 2020 3 25 39 MySQL DELETE FROMuserMongo db user remove MySQL DELETEFROMuserWHEREage gte lt lte ne 软实力 删除 2020 3 25 40 删除原理 位置通过DiskLoc数据结构进行存储 存储了数据文件编号和块在文件中的位置 删除的块或者

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论