第33章:MongoDB-索引--GridFS存储文件

①简介

GridFS是MongoDB用来存储大型二进制文件的一种存储机制。特别适合用在存储一些不常改变,但是经常需要连续访问的大文件的情况。

②GridFS的优点

1:能够简化技术栈,如果已经使用了MongoDB,那么使用GridFS,就不需要其它独立的存储工具了

2:GridFS会自动平衡已有的复制,或者为MongoDB设置的自动分片,所以对文件存储做故障转移或者是横向扩展会更容易

3:GridFS的功能不错,能自动解决一些其他文件系统遇到的问题,如在同一个目录下存储大量的文件

③GridFS的缺点

1:性能较低,不如直接访问文件系统快

2:无法修改文档,如果要修改GridFS里面的文档,只能是先删除再添加

④基本操作

最简单的就是使用自带的mongofiles工具。

1:查看文件列表:mogofiles list

2:上传文件: mogofiles put 文件路径和文件名

3:下载文件: mogofiles get 文件名

4:查找文件: mogofiles search XXX,查找所有文件名中包含XXX的文件mogofiles list XXX ,查找所有文件名以XXX开头的文件

3:删除文件: mogofiles delete 文件名

⑤基本原理

GridFS会将大文件分割为多个比较大的块,将每个快作为独立的文档进行存储,另外用一个文档来将这些块组织到一起,并存储该文件的元信息。

GridFS中的块被存储到专用的集合中,默认是fs.chunks,可以通过db.fs.chunks.find();查看这个集合,里面的结构非常简单,说明如下:

1:files_id:块所属文件的元信息

2:n:块在文件中的相对位置

3:data:块所包含的二进制数据

GridFS中每个文件的元信息被存储到单独的集合中,默认是fs.files,,可以通过db.fs.files.find();查看这个集合里面的结构非常简单,说明如下:

1:_id:文件唯一的id,就是前面的files_id

2:length:文件包含的字节数

3:chunkSize:组成文件的每个快的大小,单位是字节,这个值默认是256k

4:uploadDate:文件被上传到GridFS的日期

5:md5:文件内容的md5校验值

 
 
 
 
 
 
 
 
 
 
 
 
 
 
上一篇:Redis事件订阅和持久化存储


下一篇:UML用例关系一览