SSDT сопоставим с Liquibase / Flyway, так как он делает то, что они делают, но используя другой подход. С SSDT у вас есть среда разработки, так что вы получаете такие вещи, как переход к определению, поиск ссылок и интеллигентский смысл, а также возможность компилировать проект в dacpac и затем развертывать этот dacpac в базе данных.
Способ SSDT (и способ сравнения redgate sql) для развертывания состоит в том, чтобы объявить, что вы хотите, так что если вы хотите изменить таблицу, которая выглядит следующим образом:
create table a(id int)
к таблице, которая выглядит как:
create table a(id int, another_column varchar(12))
с SSDT вы просто меняете определение таблицы на второе и позволяете SSDT беспокоиться о том, как его обновить (может ли он изменить таблицу, добавить столбец или изменить порядок столбцов, поэтому вам потребуется перестроить таблицу и т. д.).
С помощью Liquibase (DbUp, ReadyRoll, ручные методы и т. Д.) В этом случае вы должны сами написать таблицу изменения и убедиться, что вы запускаете сценарии в правильном порядке, рассмотрите следующий сценарий:
- Выпуск 1 - создать столбец привет на таблице
- Выпуск 2 - переименовать столбец привет в joe_blogs
- Выпуск 3 - переименовать столбец joe_blogs в hello
- Выпуск 4 - создать столбец joe_blogs
Если какой-либо из выпусков пропущен, ни один из следующих не может продолжаться.
Преимущества скриптов обновления (Liquibase, DbUp и т. Д.):
- Вы имеете полный контроль над сценариями
- Администраторы баз данных / разработчики привыкли к этому
Преимущества сравнения / слияния (SSDT, Redgate SQL Compare):
- Не нужно писать сценарии обновления
- Получить любую конкретную версию легко. Просто сравните и объедините эту версию.
Недостатки скриптов обновления:
- Должен быть запущен в порядке
- Положитесь на людей без ошибок
- Может быть медленным, особенно если у вас много изменений
- Если ваша команда не очень дисциплинирована, базы данных в разных средах (dev, test, staging, prod и т. Д.) Часто становятся не синхронизированными, что делает любое тестирование недействительным
- Понижение версии означает написание обратной версии всех сценариев, которые вы уже написали.
Недостатки использования сравнения / слияния:
- Инструменты не на 100% доверяют, возможно, несправедливо
- SSDT требует работающего проекта, во многих многих базах данных есть код, который на самом деле не компилируется и не запускается (например, удаленные таблицы, но не процедуры и т. Д.), Я видел это примерно в 8/10 базах, которые я унаследовал :)
- Многие DBA / разработчики не решаются отказаться от разработки в SSMS / блокнот
Лично я действительно считаю, что SSDT - это профессиональная среда разработки, и это означает, что я могу сосредоточиться на написании полезного кода и тестов, а не на написании сценариев обновления, которые сами по себе являются лишь средством для достижения цели.
Вы спрашивали мнения, так что вы идете :)
издание