mongoDB(4)——mongoDB数据库的结构及GridFS存储机制

mongodb安装文件:https://pan.baidu.com/s/1i50wR4p正则表达式

一)mongodb结构:mongodb

Collections:在mongoDB中叫作集合,是文档的集合。它是无模式的,能够存储各类各样的文档。数据库

       和关系型数据库中的表相比,关系数据库的每一张表就是一个关系模型的映射,每张表的字段就是对应实体的属性和主外键的集合,每一个字段须要提早定义。数组

       而集合中能够保存毫无关系的数据,并且具体要保存什么不须要提早定义。服务器

  Document:文档是mongoDB保存数据的基本单元。数据的存储结构为BSON格式,也就是TextView中显示的文本。.net

       保存的数据类型能够为:null、boolean、String、object、32位整数、64位整数、64位浮点数、日期、正则表达式、js代码、二进制数据、数组、内嵌文档、最大值、最小值、未定义类型。视频

 GridFS:因为BSON对象有大小限制,不适合存储大型文件,GridFS文件系统为大型文件提供了存储方案(其存储原理稍后再讲)。fs中保存的是图片、视频等大文件。对象

二)GridFS存储机制:  blog

 MongoDB的文档以BSON格式存储,支持二进制数据类型,因此,能够把文件的二进制格式的数据直接保存到MongoDB的文档中,可是每一个文档的长度是有限制的,而咱们通常上传的图片、视频等文件又比较大。针对这种状况,mongoDB提供了一种处理大文件的规范——GridFS。排序

    1、实现原理:

     将要存储的文件分红若干块儿,每一块做为一个单独的文档来存储,每块默认大小为256k。用两个集合来存储一个文件:fs.files与fs.chunks。

      fs.files存放文件信息

      

     _id:惟一标识   length:文件总长度    chunksize:每块儿的大小,默认为256k      uploadDate:时间戳    md5:文件内容的md5校验和,值由服务器端生成,用于计算上传块的md5校验和,用户能够校验md5的值确保文件正确上传。 contentType:文件类型    还能够添加其余键来标识这个文件,例如,能够是上传者的信息。

      fs.chunks:存放文件的数据

      

       _id:惟一标识    files_id:文件集合中的_id    n:文件的第几个块儿   data:文件的二进制数据

 

      2、保存文件的流程

            若是文件大于chunksize,则把文件分割成多个chunk,再把这些chunk保存到fs.chunks中,最后再把文件信息存入到fs.files中。

     3、读取文件的流程

           先据查询的条件,在fs.files中找到对应的文档,获得“_id”的值,再据这个值到fs.chunks中查找全部“files_id”为“_id”的chunk,并按“n”排序,最后依次读取chunk中“data”对象的内容,还原成原来的文件。

     4、注意:

           GridFS在上传文件过程当中是先把文件数据保存到fs.chunks,最后再把文件信息保存到fs.files中,因此若是在上传文件过程当中失败,有可能在fs.chunks中出现垃圾数据。这些垃圾数据能够按期清理掉。

相关文章
相关标签/搜索