前言 :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,既可获取相应的信息..
http://lonvea.iteye.com/blog/1180672
相关推荐
Laravel开发-laravel-gridfs-storage 用于Laravel存储API的MongoDB GridFS集成
GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。 MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。 MongoDB支持...
使用 Mongoose 以简单的语法将大型文档存储在 MongoDB 数据库中。 这个项目应该只与生成器重的项目一起使用,比如 Koa 项目。 此项目仅适用于 Node > 0.11。 安装 你可以通过 NPM 下载这个插件。 npm install ...
主要介绍了MongoDB学习笔记之GridFS使用介绍,本文介绍了GridFS的作用、GridFS的一些使用方法、GridFS实现原理及注意事项等,需要的朋友可以参考下
MongoDB原子操作与GridFS.pdf 学习资料 复习资料 教学资源
MongoDB 2.8.1 DLL,四个DLL:MongoDB.Bson.dll,MongoDB.Driver.Core.dll,MongoDB.Driver.dll,MongoDB.Driver.GridFS.dll,Net 4.5.2
nodejs-mongodb-multer-fileupload 使用multer,gridfs,mongodb / mongoose的Node.js文件上传系统
我正在尝试从GridFS读取3种不同的部署(不同的MongoDB驱动程序)。 并将结果与经典的Nginx配置进行比较。贡献者( ) ( )构型1,Nginx location /files/ { alias /home/ubuntu/;}测试期间, open_file_cache...
gridfs2s3 - 将 MongoDB GridFS 文件迁移到 AWS S3 的工具 这是一个简单的工具,它将抓取您指向的 GridFS 中的所有文件,并将它们粘贴到 S3 中 安装 go install github.com/Bowbaq/gridfs2s3 用法 gridfs2s3 -h flag...
nginx+gridfs存储及查看图片方案,适用于centos7的mongdb 3.0.15版本的安装包
不使用GridFS-如果图像大小超过16MB,则无法使用此模块。 安装 npm install --save ghost-mongodb-storage 创建存储模块 使用文件夹路径'content / storage / ghost-mongodb / index.js'创建index.js文件 'use ...
基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,...
Mongodb的gridfs的C#的例子
Multer的GridFS存储引擎 存储引擎,用于将上传的文件直接存储到MongoDb。 :fire: 产品特点与MongoDb... :rocket: 安装使用npm $ npm install multer-gridfs-storage --save 基本用法示例: const express = require
MongoDB.GridFS.dll c#类库...............................................
使用JWT身份验证ReactPython MongoDB CRUD应用程序该应用程序是使用python作为后端的简单CRUD应用程序。 它还提供了使用Python中的GridFS上传和下载图像的功能。安装说明使用npm软件包管理器从客户端文件夹中存在的...
Mongodb基于GridFS存储文件,通过流的方式存储文件图片,以及读取功能。本人亲自测试、编写。值得信赖
Laravel开发-gridfs 使用laravel上的gridfs存储文件、图像和文档
主要为大家详细介绍了使用MongoDB.NET 2.2.4驱动版本对Mongodb3.3数据库中GridFS增删改查,具有一定的参考价值,感兴趣的小伙伴们可以参考一下