2014-02-13 36 views
0

我正在尋找一種解決方案,讓我將一些嵌套的文件結構(目錄,文件)存儲在單個文件中。我想過像tarball這樣的簡單檔案,但是由於許多操作,這是不合適的。在C++的本地磁盤上使用GridFS

比我想到的JSON和存儲二進制文件,作爲base64編碼的字符串。然後我偶然發現BSON和它的限制爲每個文件16MB。然後再次發現GridFS作爲一個包裝器,將更大的文件分割成更小的塊。

這對我的目標來說是完美的,因爲16MB大塊完全適合。

由於我的項目分散對齊,我不能使用像Mongo這樣的中央數據庫。是否可以使用GridFS作爲單個本地文件,如storage.bson或其他,我可以在其中存儲,我的文件?

+0

GridFs是MongoDb的一部分。爲什麼不使用文件系統?它存儲文件非常好。 :) – WiredPrairie

+0

這是一個革命性的想法。謝謝你打開我的眼睛:)但不,我的情況取決於一個文件的解決方案。 –

回答

1

GridFs使用MongoDb文檔的存儲系統來存儲小塊(256K)的文件。這不是MongoDb的一個方面,可以拆分獨立使用。

MongoDb在默認情況下也會創建2GB的數據存儲文件。所以,即使使用MongoDb,這些文件也不會存儲在單個文件中。他們將被分成多個數據文件。像這樣的文件拆分在數據庫中並不罕見。

此外,作爲存儲格式,BSON不限於16MB。 MongoDb引擎強加了16MB的限制。根據specification,BSON文檔幾乎可以存儲2GB的數據。

+0

在C++中有一個獨立的實現:https://github.com/jbenet/bson-cpp –