8.1 什么是GridFS

关系型数据库读取上传要2步性能差

A caption

A caption

MongoDB的存储基本单元是BSON文档对象,字段值可以是二进制类型,支持一条记录存储;
文件内容直接保存到MongoDB(非路径),可充分发挥分布式特性
MongoDB对单个文件有限制,最大不超过16MB,可直接存储;
当文件大于16MB时,就需要通过GridFS实现。

  • GridFS不是额外重新开发的文件系统,它依赖MongoDB的整个体系架构,如存储引擎、集合、查询语法、分片集群等。
  • GridFS将大文件切割成许多小块,默认每块255KB,小块作为一条文档记录存入集合。
8.1-2

8.1-2

  • 文件上传到GridFS后,文件均有2个特殊的集合存储文件内容,chunks集合,存内容块,和files集合,存元数据信息。
  • 和分片集群的chunk大小64MB,强调的是片键索引范围的文档记录,和GridFS的不一样。
A caption

A caption

  • 从GridFS中获取一个文件分为2个步骤,先查询fs.files中的_id,和fs.chunks中的files_id对应,再将chunks中的files_id的内容合并后返回;
  • db.fs.files.find(); db.fs.chunks.find()
  • db.fs.files.getIndexes({}) //已自动建索引
A caption

A caption