GridFS简介

作者: 每天有趣一点点 | 来源:发表于2019-02-23 21:07 被阅读2次

1.   简介

       GridFS是MongoDB中存储和查询超过BSON文件大小限制(16M)的规范,不像BSON文件那样在一个单独的文档中存储文件,GridFS将文件分成多个块,每个块作为一个单独的文档。默认情况下,每个GridFS块是255kB,意味着除了最后一个块之外(根据剩余的文件大小),文档被分成多个255kB大小的块存储。

       GridFS使用两个集合保存数据,一个集合存储文件块,另外一个存储文件元数据。

       当从GridFS中获取文件时,MongoDB的驱动程序负责将多个块组装成完整文件,你可以通过GridFS进行范围查询,可以访问文件的任意部分(例如跳到视频文件或者音频文件的任意位置)。

       无论是超过16M的文件和其他文件,只要存在访问时不想加载整个文件的场景存在,GridFS就有帮助。

2. 应用场景

       在MongoDB中,使用GridFS存储超过16M的文件(BSON文件不能超过16M)。在某些情况下,MongoDB存储大文件会比操作系统的文件系统更高效:

        1. 如果你的文件系统限制目录下文件的个数,可以使用MongoDB在目录下存储任意多的文件。

        2. 访问大数据文件时,不想一次加载而是分段访问。

        3. 在多个系统间实现文件和元数据同步。

        对文件进行原子更新时,MongoDB不适合,不能支持对文件多个块更新操作的原子性;如果确有需要,也可以通过在元数据中指定当前版本来变通实现。

        如果你的文件都小于16M,应该考虑使用每个文件存一个独立文档的方式来取代GridFS,可以使用BinData类型来存储二进制数据(也可以使用GridFS,需要修改chunk大小,避免小文件被拆分,需要进行测试和比较性能)。

3. 存储管理

      MongodB使用两个集合来存储GridFS文件,一个是fs.files,另一个是fs.chunks。

       fs.files这个集合中存储的是每一个上传到数据库的文档的信息。

       fs.chunks这个集合存储的是上传文件的内容。一个chunk相当于一个文档(大文件被拆分成多个有序的chunk)。

        GridFS中的bucket这个概念指代的是fs.files和fs.chunks的组合。

相关文章

  • GridFS简介

    1. 简介 GridFS是MongoDB中存储和查询超过BSON文件大小限制(16M)的规范,不像BSON文...

  • MongoDB GridFS 使用 存储特点

    GridFS简介 1,GridFS是用于存储和检索超过16MB的BSON文档大小限制的文件的解决方案。 2,Gri...

  • GridFS

    GridFS是一种在MongoDB中存储大二进制文件的机制。使用GridFS存文件有一下优势: GridFS会直接...

  • Go 语言开发利器

    1、项目名称:分布式文件服务 项目简介:golang 基于 gridFs 的分布式文件服务,其支持: POST G...

  • Java MongoDB保存图片

    本文介绍如何使用GridFS API把图片文件保存到MongoDB。GridFS API也能保存其他二进制文件,如...

  • PHP操作MongoDB GridFS 存储文件,如图片文件

    GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的...

  • MongoDB

    一、MongoDB特点 1.内置GridFS,支持大容量的存储:GridFS是一个出色的分布式文件系统,可以支持海...

  • MongoDB GridFS

    BSON BSON 是由 10gen 开发的一个数据格式,目前主要用于 MongoDB 中,是 MongoDB 的...

  • 技术干货| 如何在MongoDB中轻松使用GridFS?

    GridFS[https://docs.mongodb.com/manual/reference/glossary...

  • 【mongoDB】MongoDB GridFS

    MongoDB GridFShttps://www.runoob.com/mongodb/mongodb-grid...

网友评论

    本文标题:GridFS简介

    本文链接:https://www.haomeiwen.com/subject/kshmyqtx.html