mongodb GridFS

MongoDB GridFS

         因为业务的原因,会存储到图片数据,以往在SQL中,都是利用文件系统来存放图片。但是文件系统存在的问题是,不可以备份,无法容灾。

        优势:那么使用GridFS的理由,好处具体有哪些:1)不再受文件目录下文件数目大小的限制,无论在linux还是windows中,某一个文件夹中下的文件数目是有限制的,分不同的文件系统。2)文件在访问的时候必须从磁盘中掉出整个文件以访问,如果文件比较大,那么占用的内存及访问时间会是一个问题。3)mongodb本身的副本集概念,能够做到备份数据,避免文件被删除产生的问题。

         实现原理:Mongodb的GridFS就是为存储文件而生,因为mongodb在存储数据的时候是有对文件大小有限制,BSON文件的最大为16M。因此,在Mongodb存放文件时,使用两个集合:fs.chunks,fs.files.在MongoChef中,右击数据库,会有一个Add GridFS bucket,建立一个文件的集合。其中,fs.chunks存放文件数据,fs.files存放文件信息。文件信息主要属性:文件长度、块大小,创建时间等。有点类似索引的概念。Mongodb采用二进制的方式存放数据,二进制与文本文件的存取,主要在于编码方式,二进制文件方式能够最大程度上减小文件所占用的大小。在Mongodb的GridFS中的块默认情况下每块的大小为255K。GridFS对files及chunks都使用了索引。Chunks的索引为file_id及chunk的序列号。Files的索引为文件名称及上传时间:filename,uploadDate

        操作方式:在mongodb中提供一个工具:mongofiles,上传、下载文件的命令分别为:put 与get。当mongos已经使用了权限,注意后面使用-u –p –db -port等参数,列出当前fs中已有的文件:list。

         MongodbFS存在的局限:

1、  无法保证原子操作,因为是块保存的,这就有一个问题了,如果要修改文件的话,可能需要删除原来的再重新保存进去。块需要重新分配。

2、  如果图片的大小比较小,mongodb在访问GridFS会有两次,首先会访问fs.files,然后访问chunks,时间或许比文件系统的更慢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值