首页 > 数据库 >基于MongoDB GridFS的图片存储

基于MongoDB GridFS的图片存储

时间:2022-12-12 19:03:00浏览次数:71  
标签:文件 存储 .. mongodb GridFS MongoDB

它是mongodb的一个子模块,使用GridFS可以基于mongodb来持久存储文件.并且支持分布式应用(文件分布存储和读取).GridFS是mongodb中用户存储大对象的工具,对于mongodb,...

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

下面是两个PPT,对MongoDB的GridFS都做了介绍,包括了GridFS相对于传统文件系统存储,网络文件系统存储的优势。虽然内容相似,但介绍方法各异。推荐给大家。

Gridfs and MongoDB

View more ​​presentations​​​ from ​​Mitch Pirtle​

Grid FS

View more ​​presentations​​​ from ​​Chris Powers​

MongoDB gridfs

View more ​​PowerPoint​​​ from ​​Xue Wei​

​​使用Mongodb存储上传物理文件并进行SQUID加速(基于aspx页面)​​

​​Mongodb亿级数据量的性能测试​​

​MongoDB资料汇总专题​


​基于MongoDB GridFS的图片存储​

​基于MongoDB GridFS的文件存储策略​

 



标签:文件,存储,..,mongodb,GridFS,MongoDB
From: https://blog.51cto.com/shanyou/5931299

相关文章

  • 7天7项云服务 | 03-对象存储Object Storage,将海量对象文件转成链接
           2006年3月,AWS发布了简单存储服务(S3,SimpleStorageService),这也是云计算从此商业化的标志性事件,是云计算的第一个产品。              有......
  • pinia-plugin-persist 持久化存储失效和使用过程必踩的坑
    技术栈:vue3+vue-Router^4.0+pinia3.0+pinia-plugin-persist持久化存储场景:vue-router路由守卫跳转前判断 pinia状态state的token是否存在,存在就跳转,不存......
  • MongoDB性能测试(Windows环境)
    MongoDB性能测试(Windows环境)一、测试环境Server硬件环境:Client硬件环境:MongoDB版本:mongodb5.0.14二、性能测试实验目的:往MongoDB中插入10000条json,统计花费的时......
  • 存储基础知识
    存储基础知识一、本地文件系统文件系统是操作系统中的最重要的组成部分,也是最复杂的部分之一。文件系统是存储系统的基础和核心。例如微软的Fat32,NTFS;Unix的UFS,Linux......
  • MongoDB的local数据库
    每个mongod实例都有自己的local数据库,用于存储复制过程中使用的数据和其他特定于实例的数据。local数据库对复制不可见:不复制local数据库中的集合。local数据库中的集合:......
  • 如何高效存储中高频多因子
    2022年12月1日晚7点半,DolphinDB进行了以「中高频多因子库存储最佳实践」为主题的直播,吸引了众多专业观众的注意。本文将回顾直播精彩内容。DolphinDB的因子库:为了使广大用......
  • MongoDB 聚合管道(Aggregation Pipeline)
    管道概念POSIX多线程的使用方式中,有一种很重要的方式-----流水线(亦称为“管道”)方式,“数据元素”流串行地被一组线程按顺序执行。它的使用架构可参考下图:以面向对象的思想......
  • 你不知道的开源分布式存储系统 Alluxio 源码完整解析(上篇)
    一、前言目前数据湖已成为大数据领域的最新热门话题之一,而什么是数据湖,每家数据平台和云厂商都有自己的解读。整体来看,数据湖主要的能力优势是:集中式存储原始的、海量的、多......
  • 前端开发系列046-基础篇之数据存储
    title:'前端开发系列046-基础篇之数据存储'tags:-数据安全系列categories:[]date:2017-11-3100:00:00一、数据存储技术(Cookie)简单介绍web存储相关的技术:co......
  • mysql存储过程
    CREATEDEFINER=`page_visitor_record`@`%`PROCEDURE`addTestData`()BEGINDECLAREnumberINT;SETnumber=1;WHILEnu......