Репозиторий контроля версий для пользовательских данных - PullRequest
0 голосов
/ 05 декабря 2010

Какие инструменты или какие-либо руководства о том, как смоделировать мою схему mysql для хранения пользовательского контента под контролем версий?Подобно хранилищу SVN, но вместо кода мне нужно версия всех пользовательских объектов.Например, какие фотографии были у пользователя 2 года назад в эту дату.Какие у него были настройки и т. Д. Да, я могу хранить резервные копии в таблицах, но проблема в том, что из-за различных типов объектов задействованы сотни и сотни таблиц.И я буду делать shanpshots каждый день сейчас и планирую реализовать это с каждым редактированием позже.В общем, мне интересно, как хранилище SVN хранит содержимое в базе данных или как Windows хранит точки восстановления в некоторой базе данных, чтобы я мог имитировать эту модель для пользовательских данных.Единственное требование для меня - мне нужно использовать mysql для основной базы данных.Я вижу это так:

Активные данные и Исторические данные.Активные данные имеют текущую копию.Исторические данные индексируются по дате / времени.Но все равно поддерживать сотни табличных данных для каждого пользователя каждый день, что означает 365 x количество пользователей x количество строк таблицы, которые мне нужны для версии.я не знаю, лучший ли путь для этого в mysql в 3NF?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2010

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

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

Мое предложение состояло бы в том, чтобы сконцентрироваться на взаимодействии вашего программного обеспечения с чем-то, где кто-то уже проделал тяжелую работу, таким как Subversion, Git, Mercurial или одним из других превосходных доступных инструментов контроля версий. Вы можете использовать их в качестве хранилища для хранения и создания версий всех файлов, а также для сборки своего программного обеспечения, чтобы иметь смысл всего этого.

Чтобы построить эффективную систему контроля версий, вам нужно точно знать, что вы делаете, почему бы не использовать повторно то, что создали эксперты.

Если вы все еще хотите сделать это самостоятельно, вы могли бы сделать хуже, чем Эрик Синкс, Руководство по управлению исходным кодом

0 голосов
/ 05 декабря 2010

Вы можете просто иметь поле timpstamp вместе с каждой записью базы данных. Затем выполняйте отложенное удаление вместо удаления данных, т. Е. Имейте поле «удалено», которое снова может хранить временную метку удаления. Все это в совокупности позволит вам выполнять исторические запросы.

Когда вы приступите к реализации этого из исторических снимков, вы можете оценить временную метку на основе первого / последнего снимка, в котором вы видите запись, и соответственно изменить записи базы данных.

...