GridFS

MongoDB的一个重要子模块,可基于MongoDB来持久存储文件,并且支持分布式存储和读取。

持久存储:对应瞬时数据如内存,指保存到数据库中,能持久保存。
分布式存储:将数据分散地存储于多个位置。

存在的意义

MongoDB采用BSON格式存储数据,对数据的大小限制为16M,但是在实际的系统开发中,上传的图片或文件可能尺寸会很大,此时可以使用MongoDB中的GridFS解决,通常用来处理大文件的存储。

存储原理

GridFS使用两个集合来存储文件:

  • fs.chunks:存储文件的二进制数据(一个文件有一到多条数据)
  • fs.files:存储文件的元数据(一个文件只有一条数据)

元数据:用来描述数据的数据,如数据大小、创建时间、文件名、格式类型等。

存储数据

当一个文件存储到GridFS时,如果文件大于chunksize(一个chunk的大小,256KB),会将文件按照chunk的大小分割成多个chunk块,最终将chunk块的信息存储在fs.chunks集合的多个文档中,然后将文件信息存储在fs.files集合的唯一一份文档中。

读取文件

先根据查询条件在fs.files集合中找到对应的文档,得到_id字段,在查询对应fs.chunks集合中所有files_id_id相同的文档,最后根据n字段的顺序读取chunk的data字段二进制数据,还原文件。

使用GridFS

mongofiles是GridFS的实用工具,用于管理GridFS文件,在MongoDB安装目录下的bin目录中,可在命令行直接使用。

上传文件mongogiles put 文件名


生成的fs.files:

生成的fs.chunks:(我上传的file.mov共750KB,分成了3个chunk)

列出文件mongofiles list

下载文件mongofiles get 文件名

删除文件mongofiles delete 文件名


  • GridFS详述
  • Node.js中使用GridFS

MongoDB(四)——GridFS相关推荐

  1. MongoDB之GridFS

    [MongoDB是什么?] MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间 ...

  2. MongoDB:GridFS删除方法删除存储桶中的所有文件

    不久前,我们遇到了MongoDB GridFS的奇怪行为,这使我为MongoDB Java驱动程序创建了一个故障 单 . 今天,我在浏览器书签中找到了指向故障单的链接. 该票证目前尚未解决,因此我认为 ...

  3. 实验mongodb使用gridfs存放一个大文件

    1.启动mongoDB 2.使用gridfs存放大文件 3.观察fs.chunks和fs.files的情况 命令 db.fs.chunks.find()查到的是一些二进制文件: 转载于:https:/ ...

  4. MongoDB C++ gridfs worked example

    使用libmongoc,参考:http://mongoc.org/libmongoc/current/mongoc_gridfs_t.html #include <mongoc.h> #i ...

  5. Spring保存文件到MongoDB之GridFS支持

    为什么80%的码农都做不了架构师?>>>    问题 Spring上传来的文件,怎么保存到MongoDB中去类,这里暂时不考虑其他方案来保存文件,如文件系统,FTP等等之类的.假设, ...

  6. java mongodb gridfs_MongoDB-4 GridFS 文件存储

    1. 配置config spring: data: mongodb: uri: mongodb://username:password@192.168.2.72:27017 database: myd ...

  7. .NET MongoDB Driver GridFS 2.2原理及使用示例

    一.API解读 1 GridFSBucketOptions 1)public string BucketName { get; set; } 获取或设置bucket名称 2)public int Ch ...

  8. 浅尝辄止MongoDB:GridFS

    一.为什么使用GridFS GridFS是MongoDB的一个子模块,使用GridFS可以基于MongoDB来持久存储文件,并且支持分布式应用(文件分布存储和读取).作为MongoDB中二进制数据存储 ...

  9. 第10周 Mongodb的GridFS与分片

    GridFS GridFS是一种将大型文件存储在MongoDB的文件规范. GridFS 规范提供了一种透明的机制,可以将一个大文件分割成为多个较小的文档.这将容许我们有效的保存大的文件对象,特别对于 ...

最新文章

  1. 【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器端开发 )
  2. Python中的模块和包:模块的(动态)导入、__future__模块使用
  3. ExtJS 3 在Tab下加入Form 实例
  4. 监控Linux系统状态的命令
  5. 什么是SQL Server TRIM()函数?
  6. Android安全:Hook技术
  7. CI 图片上传路径问题的解决
  8. 送你一份万字机器学习资料
  9. js读取excel中日期格式转换问题
  10. Facebook引流到独立站的三种技巧~附保姆级教程
  11. ad采样做按键开关_基于ad采样电路的多路开关量采集装置及其采集方法
  12. react18 学习(一)
  13. Cassandra启动过程详解
  14. leetCode 108. Convert Sorted Array to Binary Search Tree JAVA
  15. Python 核心编程(第二版)——网络编程
  16. Tensorflow学习之tf.keras(一) tf.keras.layers.BatchNormalization
  17. 集线器、交换机、路由器之间的关系(清晰明了)
  18. 计算机考研复试之数据结构
  19. idea中的Diagram功能,查看类图
  20. 著名数学家朱梧槚的发现揭示课本有一系列重大错误

热门文章

  1. xp计算机无法关机,WinXP电脑无法关机的解决方法
  2. PHP自动全局变量漏洞 rips工具使用
  3. echartsdemo可视化统计(笔记分享)
  4. Cplusplus实现的爱心代码,爱心里面有三个字李欣怡
  5. Mac下Android studio搭建Android开发环境【新手】
  6. 多台计算机使用一个硬盘,怎么实现多台电脑共用一块硬盘
  7. 新闲鱼验机源码+独立后台
  8. 计算机系统的大脑是什么,埃隆·马斯克认为人类未来的大脑计算机系统
  9. SN74LVC2G04DRLR 德州仪器TI 反相器
  10. MathType怎么编辑等号带点