目录
- 一、前言
- 二、GridFS
- 三、利用GridFS实现“超大容量的二进制流”的存储
一、前言
案例背景:
最近项目遇到一个问题,用户在创作时,有文件流、图片、超链接、文本等信息产生,而这些信息的容量高达几十M【超大容量的信息】。由于历史技术方案局限性,将超大容量的信息存入mongodb/ES的一个字段中。导致查询时往往会内存泄漏或接口响应慢等现象。
思考:
面对上面的问题,有这些思考:(1)、对于超大容量的文件该如何去存储?(2)、如果是超大容量的二进制信息流该如何存储?
----基于超大容量的文件存储,在【(非结构化)文件管理案例】中有详细介绍。下面主要介绍“超大容量的二进制流的存储”。
二、GridFS
对于超大容量的文件/二进制信息流,Mongodb提供GridFS可满足。GridFS是MongoDB的一个用来存储/获取大型数据(图像、音频、视频等类型的文件)的规范,能存储超过文档大小(16MB)限制的文件。
工作原理是:在GridFS存储文件是将文件分块存储,文件会按照256KB的大小分割成多个块进行存储。GridFS使用两个集合 (collection)存储数据:
files:包