Используйте GridFS на локальном диске с C ++

0

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

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

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

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

  • 0
    GridFs является частью MongoDb. Почему бы просто не использовать файловую систему? Он хранит файлы очень хорошо. :)
  • 0
    Это революционная идея. Спасибо, что открыли мне глаза :) Но нет, моя ситуация зависит от решения одним файлом.
Теги:
stream
gridfs-stream
gridfs

1 ответ

1
Лучший ответ

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню