MongoDB GridFS

GridFS是一种基于MongoDB的大文件存储方案,它利用MongoDB的复制和分片机制,实现高效故障恢复与扩展。GridFS将文件分成多个块,每个块作为独立文档存储,并通过两个集合fs.files和fs.chunks来管理文件元数据和块数据。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值