参照官网如下(如下链接依次递进):

https://docs.mongodb.com/manual/core/gridfs/
https://docs.mongodb.com/database-tools/mongofiles/#mongodb-binary-bin.mongofiles
https://docs.mongodb.com/database-tools/installation/installation/

FS:即文件系统(File System)。

GridFS简介。

mongodb中的文档(数据)是以BSON格式存储的,由于BSON的限制只能存储16M一下的数据;为了应对这个问题Mongodb提供了GridFS子模块,他可以存储大于16M的文件。GridFS是一种将大型文件存储在MongoDB的文件规范。所有官方支持的驱动均实现了GridFS规范。

注:实际上小于16M的可以直接用mongo的bson存就好了,大于16M的才需要借助Gridfs。

GridFS使用两个集合来存储文件:fs.files与fs.chunks。其中fs.files集合存放文件的信息,fs.chunks存放文件的数据。GridFS会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk作为Mongodb的一个文档存储在chunks集合中。

mongofiles工具

mongofiles可执行程序提供了命令行操作存储在GridFS对象中MongoDB实例中的文件,它提供了存储在文件系统中的对象和GridFS之间的接口。从官网中我们知道4.4版本以后上传下载文件的时候主要有官网知道 从mongodb4.4开始,mongofiles现在与MongoDB服务器分开发布,并使用自己的版本控制,初始版本为100.0.0。以前,mongofiles与MongoDB服务器一起发布,并使用匹配的版本控制。关于工具的安装,参见官网即可。

mongofiles的使用方法主要参见 --help,如下:

为了方便使用这里专门提供两条实例命令行语句:

./mongofiles --uri='mongodb://mongouser:qidian%40weixin@11.186.6.xxx:27017' --db db_shuozhuo put service.yaml./mongofiles --host 11.186.6.xxx:27017 -u mongouser -p wexin@mongo -d db_shuozhuo put build_vs_env.sh

验证上传是否成功的方法也很简单。一是看执行后的输出,二看目标db是否有对应的条目。如下图可以看到两个集合实际上都存了什么东西。

一些思考。

虽然有着集成mongodb内部,业务中无需额外引入存储平台(如cos)、易于横向扩展等优点。但个人感觉gridfs这东西不是很实用。首先是成本方面,对于图片、文件直接用专门的 对象存储(cos)就好了使用方面没有太大问题,成本还低;用数据库反而不好,何况mongodb的成本还是偏高的。另外性能较差,从mongodb访问文件比直接从文件系统访问文件速度慢(中间层开销)。此外如果要修改GridFs上的文档必须要先删除在整个重新保存。

看了下网上其他人也有类似的观点:这里  如果做文件系统的话最好用专业的。比如TFS(Taobao File System,针对大量随机访问小图片)、FastDFS、mooseFS等。

当然对于玩耍类的小项目应该还是有意义的,例如只用MongDB一款数据库即能存消息、也能存文件、还能充当redis,一个数据库就能满足所有需求,简化工程代码、大大降低同各种存储打交道的成本。

13.MongoDB之Gridfs相关推荐

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

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

  2. MongoDB之GridFS

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

  3. 浅尝辄止MongoDB:GridFS

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

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

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

  5. MongoDB C++ gridfs worked example

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

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

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

  7. MongoDB(四)——GridFS

    GridFS MongoDB的一个重要子模块,可基于MongoDB来持久存储文件,并且支持分布式存储和读取. 持久存储:对应瞬时数据如内存,指保存到数据库中,能持久保存. 分布式存储:将数据分散地存储 ...

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

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

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

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

  10. 第10周 Mongodb的GridFS与分片

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

最新文章

  1. 查杀DeDe数据库后门 网站安全狗DeDe专杀工具
  2. 大厂常见笔试题 滑动窗口内数的和
  3. 如何安排vixta之三-Installing来源劈脸安排
  4. centos安装zendopcache
  5. 【两数之和】算法优化笔记
  6. 17.默认值Default.rs
  7. 值不值得入手_iPhone11现在还值不值得入手?真实用户说出心里话
  8. oracle安装pdb报错,oracle12安装后pdb创建的用户无法连接
  9. 8.0.22Mysql的详细安装
  10. 苹果推送iOS 14.3,支持 ProRAW!
  11. bootstrap方法_中介效应中的bootstrap方法
  12. [R语言绘图]plot函数的使用
  13. velocity.properties配置说明
  14. 大数据智能推荐系统原理介绍
  15. java正则表达式 问号_正则表达式问号的四种用法详解
  16. 人类一败涂地做图教程_人类一败涂地地图制作教程 创意工坊自制地图方法
  17. php卡死代码,服务器被php进程卡死问题排查-php5.2的curl-bug
  18. 掩码、反掩码和通配符
  19. Unittest-跳过
  20. 浅谈语音信号处理系列之二 语音信号处理的基础

热门文章

  1. Vite 配置项目别名-最新版
  2. Git 常见问题总结
  3. Java 实现线程的两种方式
  4. 7-9 一元多项式的乘法与加法运算 (20 分)
  5. Linux的工作队列work queue和延时工作队列
  6. 电子书下载:Beginning ASP.NET 2.0 and Databases
  7. 用双网卡实现跨网段访问(转载)
  8. SQL Server存储过程的使用
  9. split,splice,slice,substr,substring使用方法总结
  10. python基础-文件处理与函数