@Speakus
Senior iOS developer

Контроль версий базы данных (сайта)

Как мы все знаем контроль версий позволяет нам получить программу любой версии (за любую дату), так сказать увидеть какой был код программы в тот или иной момент времени.

Вот было бы интересно узнать — есть ли что-то подобное для сайтов?
Т.е. хотелось бы иметь возможность увидеть каким был мой сайт в любой момент времени.
Скажем drupal — состоит из програмной части (разработчики drupal его держат под контролем версий в общем-то)
+ плагинов (тот же код фактически — под контроль версий положить не проблема)
+ контента пользовательского вместе с его настройками (тут как я понял непросто)

По идеи задача сводится к тому чтобы под контролем версий была база данных mySQL.
А может это делается путем отказа от MySQL в пользу какой-либо более продвинутой системы?
Буду рад любым мыслям на эту тему.

Upd. Видимо SQL база данных с поддержкой контроля версий было бы самым красивым решением. Есть ли такие вообще?
  • Вопрос задан
  • 6885 просмотров
Пригласить эксперта
Ответы на вопрос 9
mark_ablov
@mark_ablov
проксирование запросов?
Ответ написан
Комментировать
Riateche
@Riateche
1. Делаете дамп базы.
2. Включаете query log базы данных.
3. При каждом изменении лога (или в определенные промежутки времени) делаете коммиты.
4. Периодически делаете новый дамп базы, очищаете лог и коммитите это.

Для восстановления к определенному состоянию:
1. Восстанавливаете через систему контроля версий все файлы, включая дамп и лог.
2. Загружаете дамп в базу.
3. Выполняете query log.
В итоге база приводится к состоянию на нужный момент.
Ответ написан
Комментировать
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Для структуры базы данных всё очень просто. Вы помещаете sql скрипт создания базы под SVN и тогда любые изменения в ДБ должны идти через этот файл. Также в SVN можно хранить последовательные SQL скрипты, которые непосредствено изменяют ДБ: alter, update и др.
Ответ написан
Комментировать
@ascending
Ну есть очевидный вариант: запоминать все изменяющие базу запросы и применять их на первый бэкап, сделанный раньше нужной даты. По сути запрос это и есть дифф, а его выполнение является коммитом.
При большом количестве модифицирующих запросов малоприменимо, естественно.
Ответ написан
Комментировать
pratamishus
@pratamishus
Ну если у Вас сайт не очень большого объема, то можно просто поставить крон, который делает своего рода бэкапы с определенной периодичностью и просто хранить файлы включая файлы баз данных. А вот если же сайт большого объема (типа файл шеринга), тут уже посложнее. В этом случае можно будет просто написать такую программку которая сохраняет в новый архив только новые и обновленные файлы (например путем исключения по дате изменения файла относительно последней версии бэкапа)
Ответ написан
@immaculate
Программист-путешественник
Сомневаюсь, что существую такие базы данных. В MySQL и PostgreSQL такого точно нет. Вам правильно предложили, необходимо либо хранить лог всех запросов к базе, другого решения нет, если вам важна возможность увидеть буквально любое изменение.

Или перейти с Drupal на что-либо более продвинутое. Например, для Django существует несколько приложений, реализующих версионирование.
Ответ написан
opium
@opium
Просто люблю качественно работать
Для базы данных мускула достаточно включить бинарный лог и уже играться от него.
Ответ написан
Комментировать
Вроде как Drupal из коробки поддерживает версионирование нод.
Ответ написан
Bully
@Bully
если речь о drupal, то drush вам в помощь.
как управлять версиями исходников модулей, описано тут, как бэкапить БД написано у него же в документации (бэкап подключается к управлению версиями достаточно просто).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы