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 下。

阅读更多