SSDT можна порівняти з Liquibase / Flyway, оскільки він робить те, що вони роблять, але застосовуючи інший підхід. З SSDT у вас є середовище розробки, тому ви отримуєте такі речі, як перейти до визначення, знайти посилання та інтелігентність, а також можливість скласти проект у dacpac, а потім розгорнути цей дакпак у базу даних.
Шлях SSDT (і redgate sql порівняти спосіб) зробити deloyment - це оголосити, що ви хочете, щоб, якщо ви хочете змінити таблицю, яка виглядає так:
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 на привіт
- Випуск 4 - створення стовпців joe_blogs
Якщо якийсь із релізів пропущено, жоден з наступних не може продовжуватися.
Переваги сценаріїв оновлення (Liquibase, DbUp тощо):
- Ви маєте повний контроль над сценаріями
- Для цього звикли DBA / розробники
Переваги порівняння / об'єднання (SSDT, Redgate SQL Порівняння):
- Не потрібно писати сценарії оновлення
- Легко дістатись до будь-якої конкретної версії, просто порівняти та злити цю версію
Недоліки скриптів оновлення:
- Потрібно запустити по порядку
- Покладайтеся на людей, не роблячи помилок
- Може бути повільним, особливо якщо у вас багато змін
- Якщо ваша команда не має дуже дисциплінованих баз даних у різних умовах (розробник, тест, постановка, програма тощо), часто не синхронізується, що робить тестування недійсним
- Пониження версії означає написання зворотної сторони всіх сценаріїв, які ви вже написали
Недоліки використання порівняння / об'єднання:
- Інструменти не мають 100% довіри, можливо, несправедливо
- SSDT вимагає робочого проекту, у багатьох багатьох базах даних є код, який насправді не компілюється та не запускається (думаю, відкинуті таблиці, але не процедури тощо). Я бачив це приблизно в 8/10 баз даних, які я успадкував :)
- Багато DBA / розробники вагаються відмовлятися від розробки в SSMS / блокноті
Особисто я думаю, що SSDT - це середовище професійного розвитку, і це означає, що я можу зосередитися на написанні корисного коду та тестів, а не на написанні скриптів оновлення, які самі по собі є лише засобом для досягнення мети.
Ви запитували думки, так що ви йдете :)
ред