Хранение большого количества вложений в одном документе CouchDB

tl;dr: следует ли хранить каталоги в CouchDB в виде списка вложений или одного файла tar.

Я использую CouchDB для хранения документов проекта. Я просто создаю документы через Futon и загружаю их прямо оттуда. Я также написал скрипт для массовой загрузки каталогов. Я использую его как основной репозиторий контента. Я реплицирую его, чтобы у других людей в моей команде была копия репозитория.

Я заметил, что сохранение каталогов в виде последовательности файлов требует больших накладных расходов, поэтому вместо этого я загружаю .tar.gz файл, содержащий каталог. Это действительно значительно уменьшает размер документа, но теперь любое изменение каталога требует репликации всего архива.

Я ищу мысли или точку зрения по этому вопросу.


person Jacob Groundwater    schedule 29.11.2011    source источник
comment
Вы пробовали сжимать каждый файл отдельно?   -  person Marcello Nuccio    schedule 29.11.2011


Ответы (1)


Это действительно зависит от того, чего вы хотите достичь. Я постараюсь предложить вам несколько вариантов для рассмотрения.

Хранение одного файла tar.gz сэкономит вам место, но усложнит работу с ним. Если вы просто архивируете, это может сработать для вас.

Хранение всех вложений в одном документе хорошо работает для диванных приложений. Рабочий процесс заключается в том, что вы возитесь с вложениями до тех пор, пока не будете готовы выпустить приложение, тогда не будет много накладных расходов на репликацию, потому что обычно это происходит один раз. Хорошо, что они представляют собой один документ, потому что все они перемещаются/реплицируются как один пакет. Недостатки использования этого подхода для системы управления контентом заключаются в том, что вы можете получить большой багаж истории, который вам придется компактно хранить на своем локальном диване. Также вы получите много конфликтов во время репликации между диванами, и диван будет держать конфликты вокруг вас, чтобы вы могли их разрешить. Поэтому, если вы выберете эту модель, вам следует часто сжимать, чтобы уменьшить размер диска.

Для системы управления контентом я бы рекомендовал использовать один документ для каждого вложения. Так у вас будет меньше конфликтов. Будут небольшие накладные расходы, так как каждому документу будет выделено место для самого документа, но экономия за счет частого сжатия и/или разрешения конфликтов будет лучше.

Надеюсь, это даст вам несколько вариантов для взвешивания.

person Ryan Ramage    schedule 29.11.2011
comment
Я думаю, что я буду использовать один документ для каждого вложения, будь то один файл или пакет tar.gz. Я думаю, что управления конфликтами и сжатия достаточно, чтобы отпугнуть меня от слишком большого количества вложений в документ. - person Jacob Groundwater; 30.11.2011