Простые системы контроля версий или файловая система управления версиями или база данных управления версиями - PullRequest
4 голосов
/ 08 апреля 2011

Я ищу простую систему управления версиями для большого количества записей или файлов (~ 50 миллионов, ~ 100 ГБ в распакованном виде, ~ 20 МБ в упакованном виде). Файлы имеют всего несколько килобайт каждый и имеют уникальные идентификаторы, поэтому я не против, хранятся ли они в плоской структуре (таблица, каталог ...) или нет. В среднем каждая запись изменяется один раз в месяц, но большинство изменений имеют разность меньше килобайта, поэтому сжатие версий должно быть простым. Однако наивная база данных с одной записью для каждой версии будет расти слишком быстро. Мне нужны следующие операции:

  • основные операции CRUD: создание, чтение, обновление, удаление
  • быстрый список последних изменений
  • быстрый список последних изменений конкретной записи
  • запрос изменений за данный период времени
  • запрос изменений для данного пользователя (каждое редактирование связано с каким-либо идентификатором пользователя и, возможно, имеет сообщение о коммите в качестве комментария)
  • для операций записи должна быть закреплена фиксация для проверки и отклонения некорректных записей.

Короче говоря, я ищу Wiki-подобное программное обеспечение для простых записей или файлов.

Я думал о возможных решениях:

  • Поместить файлы в систему контроля версий . Это дает мне репликацию и множество доступных инструментов доступа, поэтому это мое предпочтительное решение. Но объем данных слишком велик для распределенных систем, таких как git. Кто-нибудь использует Subversion для аналогичной задачи с успехом?

  • Реализация собственной версии в базе данных или в файловой системе. Мне, вероятно, нужно было бы хранить только сжатые записи и различия, было бы больше работы и чему-то научиться. Это было бы моим предпочтительным решением, если бы это было просто для удовольствия.

  • Использовать файловую систему управления версиями . Это усложнит настройку, репликацию и доступ. Возможно, мне потребуется реализовать собственный API доступа над файловой системой.

  • Использовать систему управления версиями . Можете ли вы предложить некоторые?

  • Использование некоторых других существующих хранилищ данных с управлением версиями (MediaWiki ?, Amazon Cloud Drive ?, ...)

Очевидно, что есть много путей. Какие пути были успешно использованы другими для подобных или больших объемов данных?

1 Ответ

0 голосов
/ 14 ноября 2014

Если вы не против иметь необработанную копию каждого файла на своем клиенте (что, я думаю, нормально, если вы рассматриваете svn), то git, вероятно, является довольно хорошим решением вашей проблемы.Базовое хранилище репозитория будет использовать бинарные различия между файлами, а также между версиями, поэтому у вас там должно быть сжатие, близкое к оптимальному.

С голым репозиторием и некоторыми сценариями вы можете даже избежатьпроверяя текущую ревизию: объекты доступны из командной строки, и вы можете создавать новые коммиты без проверки.

...