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的可以直接用MongoDB的bson存就好了,大于16M的才需要借助Gridfs。

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

mongofiles工具

        mongofiles可执行程序提供了命令行操作存储在GridFS对象中MongoDB实例中的文件,它提供了存储在文件系统中的对象和GridFS之间的接口。由官网知道从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是否有对应的条目。如下图可以看到两个集合实际上都存了什么东西。

一些思考。

        虽然gridfs可以存文件意味着业务可以不用额外引入其他文件存储(如cos)、另外还有易于横向扩展等优点。但个人感觉gridfs这东西不是很实用。首先是成本方面。对于图片、文件直接用专门的 对象存储(cos)更专业的同时成本还低,用数据库显得不是那么自然。另外就是性能方面。从mongodb访问文件比直接从文件系统访问文件速度慢(中间层开销)。此外如果要修改GridFs上的文档必须要先删除在整个重新保存。

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

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱齿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值