GridFS是MongoDB中存储大文件的一种规范。所有官方支持的驱动都实现了GridFS规范。
基本原理
数据库支持以BSON对象格式存储二进制数据。但是,在mongodb中BSON对象大小是受限制的(老版本中是4MB,v1.7/1.8中是16MB,将来该限制会更高一些)。GridFS规范提供一种机制,可以透明的将一个大文件拆分到多个较小文档中。这允许我们可以高效的存储大对象,尤其是大文件,例如视频,还允许范围操作(比如,获取文件的前N个字节)。
实现
为了实现这点,该规范指定了一个可以将文件分块的标准。每个文件在集合中都有一个元数据对象,在块集合中有一个或多个块对象。更详细的信息可以查询GridFS规范;不过,你没有必要去阅读它,只需要看一看每种语言驱动的GridFS API或者mongofile工具。
语言支持
大部分驱动都包含了GridFS实现;对于下面没有列出的语言,检查一下该驱动的API文档。(如果该语言不支持GridFSAS,请查看GridFS规范--实现GridFS处理函数并不是很困难)
命令行工具
命令行工具可以用来读/写GridFS文件从mongodb到本地的文件系统。