MongoDB GridFS

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显示的结果文档一致)

你可能感兴趣的:(mongodb)