1.简介
GridFS是一种MongoDB中存储大二进制文件的机制。
2.优点
1)基于MongoDB,不需要独立的文件存储架构
2)可以使用MongoDB的复制和分片机制,故障恢复和扩展都很容易
3)由于MongoDB分配数据文件时以2GB为一块,不会产生磁盘碎片
3.使用
查看帮助文档
mongofiles --help
上传文件
mongofiles put -d micromsg D:\mongoDB\testfile.log
结果
{ _id: ObjectId('5327c0eb754750db9c8a8c4c'), filename: "testfile.log", chunkSize: 262144, uploadDate: new Date(1395114219969), md5: "c7f2268bf68ea801aba8846e91bb2f57", length: 2273 } _id: 文件唯一的id filename: 文件名 chunkSize: 每个块的大小,以字节为单位 uploadDate: 文件存入GridFS的时间戳 md5: 文件内容的md5校验和 length: 文件内容的总字节数
4.内部原理
GridFS是一个建立在普通MongoDB文档基础上的轻量级文件存储规范,基本思想是可以将大文件分为很多块,每块作为一个单独的文档存储。
fs.files--文件元数据集合
{ "_id": ObjectId(...), "n": ..., "data": BinData(...), "files_id": ObjectId(...) } _id: 块唯一的id n: 块编号,块在原文件中的顺序编号 data: 组成文件块的二进制数据 files_id: 文件唯一的id
fs.chunks--文件块的集合(和上传文件后shell显示的结果文档一致)