前言 :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,既可获取相应的信息..
分享到:
相关推荐
8. **GridFS**:支持MongoDB的文件存储系统GridFS,用于存储和检索大文件,将文件拆分为多个块存储在MongoDB中。 9. **聚合框架**:提供了强大的聚合功能,允许用户在客户端进行复杂的数据分析,而无需将数据拉取到...
官方 MongoDB Java 驱动程序提供与 MongoDB 的同步和异步交互。An updated Java driver that includes the legacy API as well as a new generic MongoCollection interface that complies with a new cross-driver ...
5. mongofiles.exe:这是一个用于管理和操作MongoDB GridFS文件系统的命令行工具。GridFS是MongoDB的一个规范,用于存储和检索大型文件,如图片、视频或文档。 6. mongostat.exe:提供实时监控MongoDB服务器性能的...
5. **mongofiles**:用于管理和操作MongoDB的GridFS文件存储系统的工具。 要运行这个MongoDB实例,你需要完成以下步骤: 1. 解压文件到一个适当的目录,例如`/opt/mongodb`。 2. 创建一个数据目录,如`/data/db`,...
- **GridFS**:MongoDB的GridFS功能用于存储和检索大型文件,如图像或视频。 - **地理空间索引**:支持地理位置数据的索引和查询,适用于地理定位应用。 总之,"mongodb-linux-i686-3.2.20"是一个针对32位Linux...
GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。 MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。 MongoDB支持...
5. **网格FS(GridFS)**:用于存储和检索大型文件,如图片或视频。 6. **地理空间索引**:支持地理位置数据的索引和查询,适用于地理位置相关的应用。 7. **原子性操作**:在单个文档级别的操作是原子性的,确保...
5. GridFS:MongoDB内置了GridFS,这是一个用于存储和检索大型文件的规范,它将大文件分割成多个小块并存储在数据库中,方便高效访问。 6. 自动备份与恢复:MongoDB提供了工具进行数据备份和恢复,这对于灾难恢复和...
在本文中,我们将深入探讨Laravel开发中的一个特殊组件——`laravel-gridfs-storage`,这是一个将MongoDB的GridFS存储系统与Laravel框架的存储API整合的工具。MongoDB GridFS是一种分布式文件存储系统,它允许我们以...
对于图片存储,MongoDB通过GridFS接口提供了一种将大文件分片存储的方法,确保了高效且可靠的存储。 MongoDB的副本集功能是其高可用性的重要组成部分。副本集是由多个具有相同数据的MongoDB实例组成的集合,它们...
4. **文件系统MongoDB的GridFS**:对于大文件的存储,MongoDB提供了一个名为GridFS的文件系统,它可以将大型文件分割成多个小块,存储在不同的文档中,便于管理和检索。 5. **2.2.2版本特点**:此版本是MongoDB的一...
7. GridFS:MongoDB 提供了一个名为GridFS的文件存储系统,用于存储和检索大型文件,如图片、视频等。 在RHEL 7.0上安装MongoDB 5.0.1的步骤通常包括以下部分: 1. 解压压缩包:首先,你需要使用`tar`命令解压缩...
7. GridFS:MongoDB提供了一个称为GridFS的文件存储系统,用于存储和检索大型文件,如图片、视频等。 在4.2.6版本中,MongoDB带来了一些显著的更新和改进: 1. 支持交易:MongoDB 4.2引入了多文档ACID(原子性、...
在描述中提到的"nginx+gridfs存储及查看图片方案"是将MongoDB的GridFS功能与Nginx web服务器结合,用于存储和检索大型文件,如图片。GridFS是MongoDB提供的一种分布式文件存储解决方案,它将大文件分成多个块...
5. **网格FS(GridFS)**:MongoDB提供了GridFS接口,用于存储和检索大型文件,如图片和视频,将其拆分为多个小块存储在数据库中。 6. **查询性能**:MongoDB的查询语言强大且灵活,支持丰富的查询操作,包括索引、...
在MongoDB 3.3版本中,GridFS是一种用于存储和检索大型文件(如图像、视频等)的机制。GridFS将大文件分割成多个小块,每个块存储为单独的文档,这样可以方便地进行上传、下载和管理。 MongoDB.NET驱动是用于.NET...
使用 Mongoose 以简单的语法将大型文档存储在 MongoDB 数据库中。 这个项目应该只与生成器重的项目一起使用,比如 Koa 项目。 此项目仅适用于 Node > 0.11。 安装 你可以通过 NPM 下载这个插件。 npm install ...
- **GridFS**:MongoDB的文件存储系统,用于存储和检索大文件,如图片或视频。 - **TTL索引**:允许设置过期时间,自动删除过期数据,方便实现缓存或日志清理。 安装和启动MongoDB 3.0.7的步骤大致如下: 1. 解压...
9. **网格FS(GridFS)**:MongoDB的GridFS功能用于存储和检索大型文件,如图片或视频,3.4.6版中这个功能也得到了增强。 10. **监控与日志**:MongoDB提供丰富的监控和日志记录功能,帮助管理员监控数据库性能并...
总结,"nginx-gridfs-0.8"为Nginx和MongoDB之间的集成提供了便利,使得大型文件的管理变得更加高效。理解其工作原理和部署流程,可以帮助开发者更好地利用这一技术栈,构建高性能的文件服务系统。