数据库

 首页 > 数据库 > MongoDB > MongoDB--GridFS简介

MongoDB--GridFS简介

分享到:
【字体:
导读:
         摘要:前言:GridFS从名字来看,就明白是一个文件系统,它是mongodb的一个子模块,使用GridFS可以基于mongodb来持久存储文件.并且支持分布式应用(文件分布存储和读取).使用场景:如果你的系统有如下情景1)有大量的上传图片(用户上传或者系统本身的文件发布等)2)文...

MongoDB--GridFS简介

前言 :GridFS从名字来看,就明白是一个文件系统,它是mongodb的一个子模块,使用GridFS可以基于mongodb来持久存储文件.并且支持分布式应用(文件分布存储和读取).

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

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

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

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

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

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

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

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

GridFS和其他分布式文件系统相比,并没有什么特殊的地方....如果有,那就是它和mongodb有一腿...

GridFS是mongodb中用户存储大对象的工具,对于mongodb,BSON格式的数据(文档)存储有尺寸限制,最大为16M.但是在实际系统开发中,经常会有上传图片或者文件的功能,这些文件可能尺寸会很大..我们可以借用Gridfs来辅助实现这些文件的管理.

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

java中使用GridFS存储文件的代码样例:

DB db = fsMongoDB.getDB("img");//Mongodb DB对象,将文件存放在哪个DB中  

GridFS gridFS = new GridFS(db,"s");//获取一个gridFS的对象,同时指定collection  

GridFSInputFile file = gridFS.createFile(fileItem.getInputStream());//创建gridfs文件  

file.setFilename(fileItem.getFileName());//指定唯一文件名称  

file.save();//保存  

存储的文件,可以通过mongo的指令去查看..

对于GridFS文件的web访问方式,大家可以搜索一下Gridfs + nginx,既可获取相应的信息..

MongoDB--GridFS简介
分享到:
MongoDB数据库的update()函数使用介绍
MongoDB数据库的update()函数使用介绍 本章节我们将开始学习如何更新MongoDB中的集合数据。 MongoDB数据更新可以使用update()函数。 db.collection.update( criteria, objNew, upsert, multi ) update()函数接受以下四个参数: criteria : update的查询条件,类似sql update查询内where后面的。 objNew : u...
MongoDB配置主从复制和集群复制的方法
MongoDB配置主从复制和集群复制的方法 一、主从复制 一般数据库都会用到这种最通用的模式——主从模式。这种方式简单灵活,可用于备份、故障恢复,读扩展。为了平衡负载,一般通过读写分离模式,即主库写、从库读。 假设我们有两台MongoDB服务器,10.11.20.140和10.11.20.139。如果要配置主从复制,可参考如下实现:...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……