Получить мою базу данных под управлением версиями, используя DVCS [Mercurial] - PullRequest
7 голосов
/ 29 июля 2010

Каков наилучший подход для создания версий всей моей базы данных?

Создание файла для каждого объекта базы данных (таблицы, представления, процедуры ...) или, скорее, наличие одного файла для всех сценариев DDL и любых новых измененийбудет помещен в отдельный файл?

Как насчет обработки изменений, внесенных в инструмент менеджера баз данных?

Я хотел бы иметь универсальные решения для любой СУБД.

Есть ли другие варианты?

Ответы [ 4 ]

3 голосов
/ 29 июля 2010

Я большой поклонник VCS в целом и большой бустер Mercurial, но я действительно думаю, что вы идете по неверному пути.

VCS - это не только итеративные изменения, «что», но и ответы «кто», «когда» и «почему». Для базы данных эти ответы гораздо менее интересны или сложны для предоставления VCS. Если вы выполняете ночной экспорт и фиксируете, «кто» всегда будет «cron», а «почему» всегда будет «полночь».

Еще одна вещь, которую современные VCS действительно хорошо делают, это помогает вам объединять изменения из нескольких ветвей. Это менее применимо в мире баз данных. Очень редко вы говорите: «Мне нужна эта структура таблицы, но эти данные», и слияние текста и различий не очень вам поможет.

То, что очень хорошо делает «что» и «когда», - это система инкрементного резервного копирования, и это, вероятно, лучше подходит.

На работе мы используем Tivoli, а дома я использую rdiff-backup и duplicity, но есть множество отличных вариантов.

Полагаю, мое общее эмпирическое правило гласит: «если он был набран вручную человеком, то он попадает в систему контроля версий, а если он был сгенерирован / экспортирован, то он добавляется в инкрементные резервные копии»

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

2 голосов
/ 29 июля 2010

Посмотрите на эту запись

1 голос
/ 27 октября 2010

Контроль исходного кода SQL в настоящее время поддерживает SVN и TFS, но запросы Mercurial быстро растут, и мы надеемся, что у нас есть история для этого очень скоро.

Мы используем UserVoice для измерения спросапоэтому, пожалуйста, проголосуйте соответственно, если вы заинтересованы в этом: http://redgate.uservoice.com/forums/39019-sql-source-control

1 голос
/ 29 июля 2010

Если вам нужно общее решение - поместите все в сценарии (простые текстовые файлы) и поместите под систему контроля версий (может использоваться любая из VCS).

Группировка похожих объектов базы данных в сценарии будет зависеть от ваших требований.

Так вы можете, например:

Хранить таблицу / индексы / в одном или нескольких скриптах Каждая процедура хранится в отдельном сценарии или объединяет небольшие процедуры в один сценарий.

Однако при таком подходе нужно помнить одну важную вещь: не забывайте менять сценарии, если вы изменили таблицу / представление / процедуру непосредственно в базах данных, и не создавайте / воссоздайте / компилируйте ваши объекты БД в базе данных после изменения сценариев. 1009 *

...