基于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) 文件尺寸较小,而且众多,且文件有可能被迁移/删除等..

时间: 2024-08-04 09:28:17

基于MongoDB GridFS的图片存储的相关文章

闲谈MongoDb+GridFS+Nginx

原文:http://tech.techweb.com.cn/thread-433779-1-1.htmlhttp://nightsailer.com/2009/11/13/499.html MongoDb果然是个好东西. 我在最近的一个项目实践中, 实验性的用到了这个东西.在测试中,对于GridFS相当满意. 首先, 和传统的MogileFS不同, gridfs可以和其它的meta数据部署在同一个db中,默认的会为gridfs的collection分别创建fs.files和fs.chunks.5

如何基于MongoDB打造.Net的分布式Session子系统

Taobao有她自己的分布式session框架,.net阵营也不能落后了,在下做了个 基于MongoDB的支持最多26台MongoDB的分布式Session框架. 先看看配置文件: <?xml version="1.0" encoding="utf-8" ?> <MongoDBSession> <DbName>SessionDB</DbName> <IdentityMap Identity="A&quo

基于MongoDb的S3实现

[原文]http://www.fuchaoqun.com/2010/05/s3-on-mongodb-with-php/ 原理是利用MongoDb的GridFS,伸展性方面交由MongoDb的auto sharding去实现,这里用PHP给MongoDb绑了个S3出来,支持选择文件存储节点,支持文件分目录存储,这样的好处是对于一些受时间影响比较明显的文件,可以按照年月的形式存储,减轻历史包袱. 首先,配置MongoDb GridFS节点信息:<?php$s3Config = array(   

基于MongoDB的高并发高可用政府云平台架构实践

3月12日下午在阿里巴巴西溪园区,举行了MongoDB杭州用户交流会.微软MSDN特邀讲师徐雷分享<基于MongoDB的政府云平台高并发高可用HA架构实践 >,从自身实践出发,讲述了政府云平台分层.技术栈选型.物理架构.API架构及DB数据库架构的设计思路和方法.   以下内容根据现场分享和演讲PPT整理而成.   学习MongoDB的重要性 目前,几乎所有国内外的互联网大公司都在用MongoDB,学习企业需要的技术很重要.   MongoDB优点   相比较关系型数据库而言,MongDB有两

基于MongoDB的高校SNS系统设计与实现

基于MongoDB的高校SNS系统设计与实现 胡恒 SNS(Social Networking Services)社会网络服务,又称社交网络服务,是一种透过人际网络形成的互联网应用服务.其中,专门为校园内学生服务的SNS网站被称为校园SNS网站.介绍使用SpringMVC+MongoDB架构高校SNS系统的关键技术.架构设计方案与实现. 基于MongoDB的高校SNS系统设计与实现

基于 MongoDB的云数据管理技术的研究与应用

基于 MongoDB的云数据管理技术的研究与应用 北京交通大学 刘一梦 介绍了云计算环境下NoSQL系统的概念.特征和理论基础,分析主流NoSQL系统的设计原理和特征,并将NoSQL系统与传统的关系型数据库在数据模式.系统架构.读写特性.可扩展性等多个方面进行了详细的分析比较.通过分析对比得出结论:对于云计算环境中的海量数据存储和处理等问题,NoSQL系统是优于传统关系型数据库的解决方案.然后以MongoDB数据库为例,分析其高扩展性集群的架构及原理.深入研究了自动分片集群所使用的均衡算法,针对

mongodb gridfs nginx 文件服务器安装配置

  gridfs是一种将大型文件存储在MongoDB的文件规范.所有官方支持的驱动均实现了GridFS规范.简单看一下官方说明:When to Use GridFSIn MongoDB, use GridFS for storing files larger than 16 MB.In some situations, storing large files may be more efficient in a MongoDB database than on a system-level fi

PHP MongoDB GridFS 存储文件的方法详解_MongoDB

<?php //初始化gridfs $conn = new Mongo(); //连接MongoDB $db = $conn->photos; //选择数据库 $grid = $db->getGridFS(); //取得gridfs对象 gridfs有三种方式存储文件 第一种直接存储文件 $id = $grid->storeFile("./logo.png"); 第二种存储文件二进制流 $data = http://www.bkjia.com/PHPjc/get

基于 MongoDB 及 Spring Boot 的文件服务器的实现

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型. 本文将介绍通过 MongoDB 存储二进制文件,从而实现一个文件服务器 MongoDB File Server. 文件服务器的需求 本文件服务器致力于小型文件的存储,比如博客中图片.普通文档等.由于MongoDB 支持多种数据格式的存储