Нужно организовать сервис, очень схожий с VCS. Нужно иметь возможность коммитить файлы, получать контент оных, списки файлов/директорий, создавать «ветки» (только создавать, слияние — не нужно) и так далее. Все это для множества пользователей.
Данные будут как текстовыми (XML) так и бинарными (InDesign файлы). 100-200 Гб вполне может набраться.
Поверх всего этого будет веб-интерфейс.
Масштабирование вопросом не стоит, одного сервера будет достаточно.
Как лучше организовать подобное хранилище? Основать поверх какой-либо технологии? Базы данных? Или же стоит писать свое решение?
@duderu
Про git я подумал в первую очередь. Но нам не нужно его локальное хранилище, у нас ведь много пользователей и каждый из них должен иметь возможность коммитить в нужные ему ветки. Не делать же для каждой ветки локальную копию и не делать же постоянно checkout.
В самом git нам бы очень подошли его внутренности — content-addressable filesystem поверх которой он написан. Но для этого нужно написать обертку, которая бы работала с его plumbing командами. А там не все так хорошо. Например, commit-tree информацию о авторе берет из переменных окружения.
Я бы однозначно использовал файловую систему как хранилище файлов и СУБД для хранения версий, веток и т.п. Т.к. учавствуют большие бинарные файлы, использовать любые VCS я б не стал - они ориентированы на текст.