基于MongoDB GridFS的图片存储

它是mongodb的一个子模块,使用GridFS可以基于mongodb来持久存储文件.并且支持分布式应用(文件分布存储和读取).GridFS是mongodb中用户存储大对象的工具,对于mongodb,BSON格式的数据(文档)存储有尺寸限制,最大为16M.但是在实际系统开发中,经常会有上传图片或者文件的功能,这些文件可能尺寸会很大..我们可以借用Gridfs来辅助实现这些文件的管理.

Mongo GFS的文件表是由 表名.files和 表名.chunks 构成,前者是文件信息构成,后者是文件的内容,两者通过_id与files_id建立关联。

GridFS会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为mongodb的一个文档(document)被存储在chunks集合中..gridfs模块会为每个文件创建chunks和files信息.每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta数据(filename,content_type,还有用户自定义的属性)将会被存在files集合中.files集合中的文档就是BSON格式,可以使用mongodb的索引等等特性,当然可以对files文档做数据分析。

使用场景:如果你的系统有如下情景

1) 有大量的上传图片(用户上传或者系统本身的文件发布等)

2) 文件的量级处于飞速增长,有可能打到单机操作系统自己的文件系统的查询性能瓶颈,甚至超过单机硬盘的扩容范围.

3) 文件的备份(不适用gridfs这种三方也可以做,但是不尽方便),文件系统访问的故障转移和修复..

4) 文件的索引,存储除文件本身以外还需要关联更多的元数据信息(比如,不仅仅存储文件,还要保存一些文件的发布式作者/发布时间/文件tag属性等等自定义信息)并且需要索引的...

5) 基于4),对文件的分类模糊,如果采用操作系统的文件系统,文件夹分类关系混乱或者无法分类时..

6) 当前系统是基于web的,对图片的访问根据url了规则路由的..(普通文件系统也可以)

7) 文件尺寸较小,而且众多,且文件有可能被迁移/删除等..

下面是两个PPT,对MongoDB的GridFS都做了介绍,包括了GridFS相对于传统文件系统存储,网络文件系统存储的优势。虽然内容相似,但介绍方法各异。推荐给大家。

Gridfs and MongoDB

View more presentations from Mitch Pirtle

Grid FS

View more presentations from Chris Powers

MongoDB gridfs

View more PowerPoint from Xue Wei

使用Mongodb存储上传物理文件并进行SQUID加速(基于aspx页面)

Mongodb亿级数据量的性能测试

MongoDB资料汇总专题

http://www.oschina.net/question/12_29127

基于MongoDB GridFS的图片存储

基于MongoDB GridFS的文件存储策略

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

控制MongoDB中的集合分布

分片标记(Shard tagging)是MongoDB 2.2.0版中的一项新功能。通过对集合进行标记使其被强制写入到本地数据中心,也可以用来将某个集合固定到一...

25960
来自专栏乐百川的学习频道

安装和使用MongoDB

MongoDB是一个著名的NoSQL数据库,顾名思义就是不使用SQL的数据库,目前在很多场景都有使用。如果你不喜欢使用笨拙的各种SQL数据库,可以尝试使用一下M...

1.1K60

Cloudify中的部署组合

[这篇文章是由DeWayne Filppi撰写的。]

565100

Cloudify中的部署组合

[这篇文章是由DeWayne Filppi撰写的。]

39560
来自专栏存储

从银行转账失败到分布式事务:总结与思考

作者:xybaby 正文 思考这个问题的初衷,是有一次给朋友转账,结果我的钱被扣了,朋友没收到钱。而我之前一直认为银行转账一定是由事务保证强一致性的,于是学习、...

37960
来自专栏挖掘大数据

详解10个最热门的大数据技术

随着大数据分析市场快速渗透到各行各业,哪些大数据技术是刚需?哪些技术有极大的潜在价值?根据弗雷斯特研究公司发布的指数,这里给出最热门的十个大数据技术。

246100
来自专栏企鹅号快讯

大话程序猿眼里的高并发

高并发是指在同一个时间点,有很多用户同时的访问URL地址。比如:淘宝的双11,双12,就会产生高并发,如贴吧的爆吧,就是恶意的高并发请求。也就是DDOS攻击,再...

226100
来自专栏乐百川的学习频道

scrapy 进阶使用

前段时间我写了一篇《scrapy快速入门》,简单介绍了一点scrapy的知识。最近我的搬瓦工让墙了,而且我又学了一点mongodb的知识,所以这次就来介绍一些s...

73670
来自专栏Java技术分享

MongoDB基础语句

MongoDB数据库安装地址:http://jingyan.baidu.com/article/d5c4b52bef7268da560dc5f8.html

577100
来自专栏企鹅号快讯

关于大数据你需要知道的一切

摘要:分析大量的数据只是使大数据与以前的数据分析不同的部分,还需要了解其他三方面是什么。 人类每天都吃、睡、工作、玩,这生产数据并且是大量的数据。根据IBM的数...

19950

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励