MongoDB GridFS 存储文件
前言
在开发中,会碰到存储图片或者视频的问题,也就是大文件存储的问题,能想到的有三种解决方式:
- 本地文件系统
- 数据库,比如 MongoDB
- 云存储,比如 Amazon S3
其他两种都比较好理解,现在想来看一下 MongoDB 是怎么来存储图片或者视频的。看到官网的文档(版本是 5.0)是如果文件大小 <
16MB,一个文档是可以存的下的,超过 16MB 的话需要用 GridFS
。
关于 GridFS
GridFS
是 MongoDB 中存储超过 16M 文件的存储方式和约定,实现的思路就是分而治之。GridFS 默认的块(chunk)大小为 256kB
,用两个 collection(chunks
) 去存文件,一个 collection(files
) 来存储切分的 chunk,另外一个 collection 来存储文件的元数据。这两个 collection 都在同一个 bucket 名为 fs
下。