2014-02-13 2 views
0

Я ищу решение, позволяющее мне хранить некоторую вложенную файловую структуру (каталоги, файлы) в одном файле. Я думал о простых архивах, таких как tarballs, но из-за многих операций это не подходит.Использование GridFS на локальном диске с C++

Чем я думал о JSON и хранил в нем двоичные файлы, как закодированные строки base64. Затем я наткнулся на BSON и его ограничение до 16 МБ на файл. Затем снова найден GridFS в качестве обертки, которая разбивает большие файлы на более мелкие куски.

Это идеальное решение для моих целей, потому что куски 16 МБ идеально подойдут.

Из-за децентрализованного выравнивания моего проекта я не могу использовать центральный БД, как Монго. Можно ли использовать GridFS для одного локального файла, например storage.bson, или что-то, где я могу хранить, ну, мои файлы?

+0

GridFs является частью MongoDb. Почему бы просто не использовать файловую систему? Он хранит файлы очень хорошо. :) – WiredPrairie

+0

Это революционная идея. Спасибо, что открыли мне глаза. Но нет, моя ситуация зависит от однофайлового решения. –

ответ

1

GridFs использует систему хранения документов MongoDb для хранения небольших фрагментов (256 тыс.) Файлов. Это не аспект MongoDb, который можно отделить, чтобы использоваться независимо.

MongoDb также по умолчанию создает файлы хранения данных объемом 2 ГБ. Таким образом, даже при использовании MongoDb файлы не будут храниться в одном файле. Они будут разделены на несколько файлов данных. Подобные файлы нередки в базах данных.

Кроме того, BSON не ограничивается 16 МБ в качестве формата хранения. Ограничение на 16 МБ накладывается движком MongoDb. Документы BSON могут хранить около 2 ГБ данных за specification.

+0

И есть автономная реализация в C++: https://github.com/jbenet/bson-cpp –

Смежные вопросы