13.MongoDB之Gridfs
参照官网如下(如下链接依次递进):
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相关推荐
- MongoDB:GridFS删除方法删除存储桶中的所有文件
不久前,我们遇到了MongoDB GridFS的奇怪行为,这使我为MongoDB Java驱动程序创建了一个故障 单 . 今天,我在浏览器书签中找到了指向故障单的链接. 该票证目前尚未解决,因此我认为 ...
- MongoDB之GridFS
[MongoDB是什么?] MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间 ...
- 浅尝辄止MongoDB:GridFS
一.为什么使用GridFS GridFS是MongoDB的一个子模块,使用GridFS可以基于MongoDB来持久存储文件,并且支持分布式应用(文件分布存储和读取).作为MongoDB中二进制数据存储 ...
- 实验mongodb使用gridfs存放一个大文件
1.启动mongoDB 2.使用gridfs存放大文件 3.观察fs.chunks和fs.files的情况 命令 db.fs.chunks.find()查到的是一些二进制文件: 转载于:https:/ ...
- MongoDB C++ gridfs worked example
使用libmongoc,参考:http://mongoc.org/libmongoc/current/mongoc_gridfs_t.html #include <mongoc.h> #i ...
- Spring保存文件到MongoDB之GridFS支持
为什么80%的码农都做不了架构师?>>> 问题 Spring上传来的文件,怎么保存到MongoDB中去类,这里暂时不考虑其他方案来保存文件,如文件系统,FTP等等之类的.假设, ...
- MongoDB(四)——GridFS
GridFS MongoDB的一个重要子模块,可基于MongoDB来持久存储文件,并且支持分布式存储和读取. 持久存储:对应瞬时数据如内存,指保存到数据库中,能持久保存. 分布式存储:将数据分散地存储 ...
- java mongodb gridfs_MongoDB-4 GridFS 文件存储
1. 配置config spring: data: mongodb: uri: mongodb://username:password@192.168.2.72:27017 database: myd ...
- .NET MongoDB Driver GridFS 2.2原理及使用示例
一.API解读 1 GridFSBucketOptions 1)public string BucketName { get; set; } 获取或设置bucket名称 2)public int Ch ...
- 第10周 Mongodb的GridFS与分片
GridFS GridFS是一种将大型文件存储在MongoDB的文件规范. GridFS 规范提供了一种透明的机制,可以将一个大文件分割成为多个较小的文档.这将容许我们有效的保存大的文件对象,特别对于 ...
最新文章
- 查杀DeDe数据库后门 网站安全狗DeDe专杀工具
- 大厂常见笔试题 滑动窗口内数的和
- 如何安排vixta之三-Installing来源劈脸安排
- centos安装zendopcache
- 【两数之和】算法优化笔记
- 17.默认值Default.rs
- 值不值得入手_iPhone11现在还值不值得入手?真实用户说出心里话
- oracle安装pdb报错,oracle12安装后pdb创建的用户无法连接
- 8.0.22Mysql的详细安装
- 苹果推送iOS 14.3,支持 ProRAW!
- bootstrap方法_中介效应中的bootstrap方法
- [R语言绘图]plot函数的使用
- velocity.properties配置说明
- 大数据智能推荐系统原理介绍
- java正则表达式 问号_正则表达式问号的四种用法详解
- 人类一败涂地做图教程_人类一败涂地地图制作教程 创意工坊自制地图方法
- php卡死代码,服务器被php进程卡死问题排查-php5.2的curl-bug
- 掩码、反掩码和通配符
- Unittest-跳过
- 浅谈语音信号处理系列之二 语音信号处理的基础