управление версиями базы данных - PullRequest
12 голосов
/ 19 апреля 2011

Я работаю разработчиком scm, и в настоящее время мне поручено занятие, в которое входит управление версиями базы данных. Хотя я занимался управлением исходным кодом, я довольно новичок в этом. Поэтому я хотел бы иметь разные взгляды и опыт о том, как это реализовать.

То, что я имею в виду под версией базы данных (oracle / sybase), заключается в том, чтобы фиксировать изменения, которые происходят со схемой / триггерами / etc базы данных, и сохранять ее как ревизии. В основном в нашей компании есть некоторые изменения в базах данных клиентов, о которых мы не знаем или, по крайней мере, не можем определить, когда и кто сделал конкретное изменение. Мы просто пытаемся создать запись изменений, которые происходят в БД.

Примечание: я не парень из БД.

Ответы [ 2 ]

5 голосов
/ 19 апреля 2011

Обычная практика - позволить изменениям проходить процесс сборки.В основном ... есть инструмент контроля версий, такой как CVS, где пользователи регистрируют изменения, которые необходимо выполнить в средах QA и Prod.

Итак ... скажем, в таблицу добавлено несколько столбцовразработчик проверяет сценарий .ddl с помощью команды «Изменить таблицу ...», и он будет «применен» к базе данных при следующем построении.

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

Примите во внимание необходимые детали, такие как пользователь, который внес изменение, время изменения, причину (комментарии при регистрации, номер ошибки, запрос новой функции и т. Д.), Которые понадобятся вам позже, чтобы понять, почему было внесено изменение.Все изменения обычно компилируются с использованием стандартного пользователя, такого как «APPOWNER», и при отсутствии системы контроля версий у вас есть доступ только к последним изменениям (last_ddl_change).

Если вы хотите отслеживать изменения вДанные, вы можете использовать триггеры или приложение, такое как Golden Gate, которое будет читать журналы повторов и получать записи изменений.Судя по вашему Вопросу, похоже, что вы ищете способ отслеживать изменения объекта.

1 голос
/ 19 апреля 2011

Лучший способ сделать это - иметь какое-то программное обеспечение для ревизии БД, которое управляет всеми изменениями и позволяет легко применять его для нескольких баз данных (повышение / понижение).

Требуется сохранить все изменения в программном обеспечении версии, никаких прямых изменений в БД.

Возможно, аналогичные инструменты для PostgreSQL помогут:

...