MongoDB系列教程(八):GridFS存储细节

MongoDB系列教程(八):GridFS存储细节
为GridFS简介

MonDB的文件都存储在BSON格式,支持二进制数据类型,当我们保存二进制格式的数据直接mondb的文件,但是当文件太大,如图片视频,每个文件的长度是有限的,所以monDb将提供一个标准——GridFS处理大文件。

GridFS的实现原理

在GridFS的数据库,fs.chunks和fs.files用于默认存储文件。fs.files集存储信息文件,文件fs.chunks存储数据,和一个fs.files集记录如下:文件信息如下。

复制代码代码如下所示:

{

_id :ObjectId(4f4608844f9b855c6c35e298 ),唯一的ID / /,可以是用户定义的类型

文件名

长度:778,文件长度

分片:262144, / /块的大小

uploaddate :聚类分析(2012-02-23t09:36:04.593z ) / /上传时间,

MD5:e2c789b036cfb3b848ae39a24e795ca6 / /文件的MD5值

内容类型:文本/平原 / / MIME类型的文件

元:空/其他信息文件,默认是不元的关键,用户可以定义任何BSON对象

}
在fs.chunks的块(中文意思对应的数据块),如下图所示:

复制代码代码如下所示:

{

_id :ObjectId(4f4608844f9b855c6c35e299 , / /块)的ID

files_id :ObjectId(4f4608844f9b855c6c35e298 , / /)文件ID、对象fs.files,相当于国外的关键fs.files集

N:0 /几块块文件,如果文件大于分片,将分为多个块的块

数据:bindata(0QGV…) / /二进制数据文件,具体内容这里省略。

}
默认大小为256K,所以文件存储在GridFS过程。如果文件大于分片,该文件将被分割为多个块,然后块保存在fs.chunks,最后文件信息存储在fs.files。

读取文件时,根据查询条件,找到一个合适fs.files记录,得到_id的值,然后根据该fs.funks files_id _id找到所有的块的值,并根据N排序,最后为了阅读在大块的数据对象的内容,恢复原始文件。

注:

1,GridFS不自动处理MD5相同的文件。对于MD5相同的文件,如果我们想在GridFS和用户处理只有一个存储,MD5值的计算是由客户端完成。

2,因为在上传过程fs.chunks GridFS是将数据保存到文件,然后保存文件信息的fs.files,所以如果你没有上传文件的过程中,有可能在fs.chunks垃圾数据,垃圾数据可以定期清理

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部