mongoDB--GridFS简介
2016-06-03 14:45
295 查看
前言 :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存储文件的代码样例:
Java代码
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,既可获取相应的信息..
原文地址:http://lonvea.iteye.com/blog/1180672
使用场景:如果你的系统有如下情景
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存储文件的代码样例:
Java代码
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,既可获取相应的信息..
原文地址:http://lonvea.iteye.com/blog/1180672
相关文章推荐
- mongoDB——java操作mongoDB实现文件上传下载
- MongoDB 系统介绍
- java 中 mongodb的各种操作 模糊查询 精确查询 等等
- MongoDB Java使用指南
- MongoDB 的 GridFS 详细分析
- Mongodb 安装过程与服务无法启动100、48问题
- Linux下安装配置MongoDB 3.0.x 版本数据库
- MongoDB学习笔记
- MongoDB快速入门笔记(八)之MongoDB的java驱动操作代码讲解
- MongoDB Java
- [MongoDB]安装MongoDB遇到问题
- SpringMVC整合MongoDB开发 高级操作
- SpringMVC整合MongoDB开发 架构搭建
- SpringBoot操作MongoDB实现分页查询
- Windows或Linux系统中备份和恢复MongoDB数据的教程
- mongoDB数据库基本操作
- 抓取新浪数据
- MongoDB快速入门学习笔记8 MongoDB的java驱动操作
- 玩转mongodb(四):细说插入、更新、删除和查询
- 故障案例--mongodb3.0 mongorestore恢复数据库时hang住