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

Описание проблемы:

В нашем проекте у нас есть одна "производственная база данных" и много "devs". Мы хотим знать, как мы можем управлять и установить изменения. У нас уже есть некоторые процедуры, но это занимает много времени и иногда вызывает ошибки.

Мы не можем потерять данные - таким образом, мы не можем использовать "таблицу отбрасывания". Мы можем только использовать, "изменяют таблицу".

Наша фактическая "процедура управления версиями дб" похожа на это:

  • У нас есть таблица, названная [actual_version], который содержит фактическую версию установленной схемы дб
  • У нас есть файл, названный "changes_script.sql", который содержит все изменения базы данных - этот файл хранится на SVN

Когда разработчик хочет фиксировать новый пересмотр на SVN, ему нужно к change_script.sql путем добавления блока:

if ([acctual_version].version < "23")) {
    --- sql script ----
updateVersionTo("23")
end if 

Когда мы хотим обновить схему базы данных, мы просто "выполняем" change_scripts.sql

У кого-либо есть лучшая идея?

10
задан Montag451 11 June 2014 в 10:21
поделиться

4 ответа

Инструмент Red Gate Sql Compare может сравнивать две таблицы (или два набора сценариев DDL, или один набор сценариев с таблицей, и т. д.) и сгенерируйте для вас сценарий миграции.

Если вы работаете с Ruby, вы можете изучить «Ruby Migrations », который представляет собой формализованный способ управления версиями БД в коде. (В .NET есть похожие вещи, такие как RikMigrations и Fluent Migrator , и я уверен, что аналогичные вещи существуют и для других платформ).

Как сказал Рэнди Миндер, вы также можете использовать VS DB Edition для управления схемой за вас, хотя я думаю, что инструменты RedGate работают так же легко и не привязывают вас к конкретной платформе или IDE.

5
ответ дан 4 December 2019 в 01:30
поделиться

Вы слышали о Visual Studio Database Edition? Если вы сейчас используете VS Team Suite или VS Developer Edition, вы получаете его бесплатно. Это инструмент управления схемами баз данных, который контролирует версию вашей схемы, позволяет проводить рефакторинг, сборку, анализ кода и развертывание.

Мы используем его для управления нашими схемами БД и развертываниями. Отличный инструмент.

1
ответ дан 4 December 2019 в 01:30
поделиться

Я бы посоветовал не использовать привязки MPI C++ для любой новой разработки. Сама программа может быть в C++, но вложить дополнительные усилия, чтобы использовать интерфейс C к библиотеке MPI.

Форум MPI отменяет привязки C++. Таким образом, будущие реализации MPI, вероятно, потеряют поддержку C++. Как правило, большинство реализаций скупятся на функции, когда речь идет о C++. Основы будут работать, но такие вещи, как динамические процессы (т.е. нерест), интерфейсы PMPI и так далее, менее хорошо поддерживаются.

Привязки C и Fortran достаточно хорошо поддерживаются всеми основными реализациями и будут поддерживаться в обозримом будущем.

-121--1452240-

Я делаю это очень аналогично , но используйте расширенные свойства базы данных вместо таблицы для отслеживания версии метаданных, и шаги обновления определены в приложении, а не в одном сценарии. Большинство шагов обновления - выполнение сценария Upgrade.vX.Y.sql .

На самом деле я нахожу ваш подход превосходящим инструменты сравнения схем (включая развертывание VS DB) по нескольким причинам:

  • Я не доверяю средствам сравнения схем, меняя очень большие таблицы, я скорее имею протестированный сценарий, специально разработанный для моей таблицы 150B записей.
  • Сравнение схем не обрабатывает удаление устаревших объектов
  • Если схема приложения была изменена на клиентском сайте, инструмент сравнения будет слепо пытаться обновить ее, но модифицированная схема может нуждаться в особом рассмотрении: проверка изменений, оценка воздействия, выставление счетов за дополнительную работу.
3
ответ дан 4 December 2019 в 01:30
поделиться

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

Если вы хотите придерживаться этого, нам помог один инструмент - SSW SQL Deploy , который позволяет вам получить целую кучу скриптов (у нас есть папка «изменения» для каждой версии, и файлы имеют метки от «001_something.sql» до «999_somethingelse.sql») и выполняют их как единое целое с базой данных. Вы также можете включить это в свои приложения .NET через API или запустить из командной строки во время установки.

Наивысший предел спектра - это внедрение всего процесса управления изменениями базы данных, что-то вроде DB Ghost от Innovartis, который представляет собой нечто большее, чем просто набор инструментов. Но для этого вам и вашим разработчикам потребуется полностью усвоить этот стиль, жить и дышать им. Очень интересно, но пока мне не удалось убедить своих разработчиков и боссов :-( Может, вам повезет больше?

1
ответ дан 4 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

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