使用C ++在本地磁盘上使用GridFS

时间:2014-02-13 09:09:03

标签: c++ mongodb stream gridfs gridfs-stream

我正在寻找一种解决方案,让我将一些嵌套的文件结构(目录,文件)存储在一个文件中。我想过像tarball这样的简单档案,但是由于很多操作,这是不合适的。

比我想到JSON并将二进制文件存储到其中,作为base64编码的字符串。然后我偶然发现BSON及其每个文件限制为16MB。然后再次发现GridFS作为一个包装器,将较大的文件拆分为较小的块。

这对我的目标来说是完美的,因为16MB的块很适合。

由于我项目的分散对齐,我无法使用像Mongo这样的中央数据库。是否可以将GridFS用于单个本地文件,如storage.bson或其他东西,我可以存储我的文件?

1 个答案:

答案 0 :(得分:1)

GridFs使用MongoDb文档的存储系统来存储小块(256K)的文件。它不是MongoDb的一个方面,可以拆分为独立使用。

默认情况下,MongoDb还会创建2GB的数据存储文件。因此,即使使用MongoDb,文件也不会存储在单个文件中。它们将被拆分为多个数据文件。像这样的文件分割在数据库中并不罕见。

此外,BSON不限于16MB作为存储格式。 MongoDb引擎强加了16MB的限制。 BSON文档每specification几乎可以存储2GB的数据。