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 - это профессиональная среда разработки, и это означает, что я могу сосредоточиться на написании полезного кода и тестов, а не на написании сценариев обновления, которые сами по себе являются лишь средством для достижения цели.
Вы спрашивали мнения, так что вы идете :)
издание
Я просто дополняю предвидение ответа.
Самая большая разница описана на веб-сайте Flyway в центральном месте:
Visual Studio + SSDT + SSIS = полнофункциональный инструмент ETL, имеющий только один реальный недостаток - он работает только под окнами. Для запуска пакетов требуется Windows + SQL Server, но работа в основном со всеми источниками.
Для переноса / переноса данных - много товаров на рынке. Коммерческие, открытые источники, сообщество / экспресс и т. Д.
Для переноса кода - все не так хорошо. Даже если программное обеспечение обещает «преобразовать триггеры, процедуры и функции без проблем», на самом деле - только простая, большая часть миграции кода - ручная.
источник
Я работал с инструментами данных сервера Sql и flyway. Используя SSDT, я получаю следующие преимущества:
После успешной сборки SSDT генерирует так называемый «DACPAC». Подумайте об этом MSI с версией.
Данный dacpac, например, с версией 5, может быть применен к базе данных с версией Dacpac 1,2,3,4 или 6,7,8 и т. Д. Если он применяется к 1-4, база данных будет обновлена. Если применяется к 6,7 и т. Д., DB будет понижен / откат. Будут предупреждения, если произойдет потеря данных, которая может быть подавлена. Таким образом, мы получаем отличную функцию отката, которая недоступна для других инструментов, таких как flyway и т. Д. При использовании flyway необходимо предоставить новый набор сценариев для отката.
DACPAC применяет все изменения в одной транзакции; Это означает, что если при обновлении 5 таблиц произошли изменения, и одна из них не удалась, вся транзакция откатывается. Flyway также поддерживает это, но для каждого файла.
Однако SSDT и DACPAC специфичны для Microsoft SQL Server; Flyway может быть использован для различных баз данных.
Итак, суть в том, что если вы используете только SQL Server, решение о SSDT и DACPAC должно быть довольно простым.
источник