MongoDB——GridFS
来源:互联网 发布:golang教程 csdn 编辑:程序博客网 时间:2024/06/07 02:18
上篇文章提到MongoDB内置GridFS,支持海量存储。那么GridFS具体是如何存储的呢?有何特殊之处呢?
在实际系统开发中,经常会有上传图片或文件的功能,这些文件可能尺寸很大。。我们可以借用GridFS来辅助管理。
GridFS结构:
MongoDBGridFS由表名.files和表名.chunks构成,前者存文件信息,后者存文件的内容,两者再通过_id与files_id建立关联。
.files:
.chunks:
一个fs.files集合中的一条记录内容如下:
{ "_id" : ObjectId("58eb7864eb61ee19bcccb8b9"),//唯一id "filename" : "toolbars.xml",//文件名 "length" : NumberLong(620),//文件长度 "chunkSize" : 262144,//chunk大小 "uploadDate" : ISODate("2017-04-10T12:19:47.632Z"),//上传时间 "md5" : "aefbb40f9e349f2bf7caf32407cf6f6b",//文件md5值 "metadata" : { "InsertTime" : "2017/4/10 20:19:46", "userID" : "mjx" } //文件其他信息}
对应fs.chunks中的chunk:
{ "_id" : ObjectId("58eb7864eb61ee19bcccb8ba"),//chunk的id "files_id" : ObjectId("58eb7864eb61ee19bcccb8b9"),//文件id "n" : 0,//文件的第几个chunk块,如果文件大于chunksize,会被分割成多个chunk快 "data" : { "$binary" : "", "$type" : "00" }//文件二进制数据,这里省略了具体内容}
文件的存与读:
~文件存入GridFS过程,如果文件大于chunksize,则把文件分割成多个chunk(文件片段),一般为256k/个,每个chunk将作为mongodb的一个文档(document)被存在chunks集合中,最后再把文件信息存入到fs.files中。
~读取文件的时候,先根据查询的条件,在fs.files中找到一个合适的记录,得到“_id”的值,再根据这个值到fs.chunks中查找所有“files_id”为“_id”的chunk,并按“n”排序,最后依次读取chunk中“data”对象的内容,还原成原来的文件。
总结:
对于mongodb,BSON格式的数据(文档)存储有尺寸限制,最大为16M。GridFS适合大文件存储,刚好可以解决这个问题。
0 0
- Mongodb——GridFS
- MongoDB——GridFS
- MongoDB——GridFS使用
- mongoDB——GridFS存储机制
- MongoDB分布式存储——GridFS
- mongoDB——GridFS存储机制
- MongoDB应用——GridFS存储文件
- mongoDB——GridFS存储机制
- MongoDB(八)Mongodb——GridFS存储
- Nosql Mongodb之旅(11)—MongoDB GridFS
- mongodb——java封装(id自增,gridFS)
- mongodb——java封装(id自增,gridFS)
- mongoDB应用篇——固定集合和GridFS文件
- MongoDB学习(三)——mongofiles实现GridFS
- MongoDB---GridFS
- MongoDB GridFS
- MongoDB GridFS
- mongodb GridFS
- 常见的脱壳技巧
- 小白第一次使用MD遇到的问题
- I
- c++ poco StreamSocket tcpclient测试用例
- Scala的implicit
- MongoDB——GridFS
- “可变参数列表”的学习
- 设计模式之装饰模式
- python中的坐标表示方法
- 同时安装office2016s,visio,project
- 拓扑(有向图判断环)—— HDU 5961
- Tensorflow BN
- Java线程池
- 最长公共子序列