[TOC]
说明:本文来自于https://www.bilibili.com/video/av36394924/?p=2视频讲解
官方文档:https://docs.mongodb.com/ 4.2版本
简介
GridFS是用于存储和检索超过 BSON -文档大小限制为16 MB的文件的规范。
GridFS不是将文件存储在单个文档中,而是将文件分成多个部分或块[1],并将每个块存储为单独的文档。默认情况下,GridFS使用默认的块大小255 kB; 也就是说,GridFS将文件分成255 kB的块,但最后一个块除外。最后一个块只有必要的大小。类似地,不大于块大小的文件只有最终块,只使用所需的空间和一些额外的元数据。
- 多机器存储, 备份。
- 可以突破一般的文件系统对files的限制
- 分段存储,不像普通的file system整个存储。
mongofiles
mongofiles <options> <commands> <filename>
--host <hostname><:port>
命令
list <prefix>
列出GridFS存储中的文件。list(例如<prefix>)之后指定的字符 可选地将返回项的列表限制为以该字符串开头的文件。
search <string>
列出GridFS存储中的文件,其名称与任何部分匹配<string>。
put <filename>
将指定文件从本地文件系统复制到GridFS存储中。
get <filename>
将指定文件从GridFS存储复制到本地文件系统。
实例操作
把一个pdf文件放入到GridFS中
root@cdcbbd0f125a:/usr/bin# ./mongofiles -d records put /macfile/110.pdf
2019-09-16T10:37:02.086+0000 connected to: mongodb://localhost/
2019-09-16T10:37:02.231+0000 added gridFile: /macfile/110.pdf
#不需要创建数据库,他会自动加载。 -d 后面是数据库
当导入file的时候, grid会在指定的db上面生成两个collection
chunks
就是把文件分割成了一个一个的255 kB的chunks块
#查询出当前的一个端的数据。
db.getCollection("fs.chunks").find({n:2})
files
就是文件的相关信息。
分布式文件系统建立
我们可以通过GridFS加上mongdb的分片,建立一个分布式的文件系统。
「真诚赞赏,手留余香」