Міграція схем: Інструменти даних SQL Server проти Liquibase та Flyway


11

Це може здатися дурним питанням, але я розглядав рішення з міграцією схем з відкритим кодом, а саме Liquibase та Flyway.

Однак мій начальник сказав мені, що SQL Server Data Tools (SSDT) ​​досягає тієї ж роботи. Я не впевнений, чи згоден, але в Інтернеті я можу знайти дуже мало, що безпосередньо порівнює його з Liquibase та / або Flyway.

На мій погляд, SSDT є інструментом розробки, моделювання даних та дизайну для SQL Server, а також підтримує порівняння схем (та генерування їх скриптів) та управління джерелами. Він вирішує іншу проблему, хоча в деяких аспектах міграції схем може бути певне перекриття з Liquibase / Flyway. Але як загальний інструмент міграції схем, Liquibase та Flyway - цілком виділені інструменти, тоді як SSDT - це більше для проектування та розробки бази даних.

Будь-які думки будуть дуже вдячні, навіть якщо просто сказати, що немає порівняння, і SSDT взагалі не є інструментом міграції схем.

Відповіді:


17

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. Випуск 1 - створення привіт стовпця на столі
  2. Випуск 2 - перейменуйте колонку привіт на joe_blogs
  3. Випуск 3 - перейменуйте стовпчик joe_blogs на привіт
  4. Випуск 4 - створення стовпців joe_blogs

Якщо якийсь із релізів пропущено, жоден з наступних не може продовжуватися.

Переваги сценаріїв оновлення (Liquibase, DbUp тощо):

  • Ви маєте повний контроль над сценаріями
  • Для цього звикли DBA / розробники

Переваги порівняння / об'єднання (SSDT, Redgate SQL Порівняння):

  • Не потрібно писати сценарії оновлення
  • Легко дістатись до будь-якої конкретної версії, просто порівняти та злити цю версію

Недоліки скриптів оновлення:

  • Потрібно запустити по порядку
  • Покладайтеся на людей, не роблячи помилок
  • Може бути повільним, особливо якщо у вас багато змін
  • Якщо ваша команда не має дуже дисциплінованих баз даних у різних умовах (розробник, тест, постановка, програма тощо), часто не синхронізується, що робить тестування недійсним
  • Пониження версії означає написання зворотної сторони всіх сценаріїв, які ви вже написали

Недоліки використання порівняння / об'єднання:

  • Інструменти не мають 100% довіри, можливо, несправедливо
  • SSDT вимагає робочого проекту, у багатьох багатьох базах даних є код, який насправді не компілюється та не запускається (думаю, відкинуті таблиці, але не процедури тощо). Я бачив це приблизно в 8/10 баз даних, які я успадкував :)
  • Багато DBA / розробники вагаються відмовлятися від розробки в SSMS / блокноті

Особисто я думаю, що SSDT - це середовище професійного розвитку, і це означає, що я можу зосередитися на написанні корисного коду та тестів, а не на написанні скриптів оновлення, які самі по собі є лише засобом для досягнення мети.

Ви запитували думки, так що ви йдете :)

ред


1
Чи працює SSDT з чим-небудь іншим, ніж SQL Server? наприклад Postgres?
a_horse_with_no_name

3
Ніяких "інструментів даних SQL-сервера" :)
Ед Елліотт

1
Чому ні? Пакет SSIS може передавати в основному всі джерела ODBC
a_vlad

Якщо я не зрозумів, я думаю, що ми говоримо про управління схемою бази даних, а не про створення пакетів ssis? Раді, що виправились :)
Ед Елліотт

1
SSIS призначений для переміщення даних і як такий підтримує з'єднання з великою різноманітністю систем. SSDT призначений для розробки та обслуговування проектів баз даних SQL Server. У ньому є процес збирання, який перевіряє вашу цільову версію SQL Server на сумісність скриптів і перевіряє всі посилання, документи тощо на синтаксис T-SQL.
Дейв

2

Я лише відповідаю на попереднє попередження.

Найбільша різниця, описана на веб-сайті Flyway на центральному місці:

Вирішує лише одну проблему і добре її вирішує. Flyway мігрує вашу базу даних, тому вам більше не доведеться турбуватися про неї.

Visual Studio + SSDT + SSIS = Повна потужність інструменту ETL, маючи лише один реальний недолік - він працює лише під вікнами. Для запуску пакетів потрібен Windows + SQL Server, але працювати з переважно всіма джерелами.

Для передачі / міграції даних - дуже багато продуктів на ринку. Комерційні, відкриті джерела, спільноти / експреси тощо

Для міграційного коду - все не так добре. Навіть якщо програмне забезпечення обіцяє "перетворити тригери, процедури та функції без проблем", насправді - лише просте, більшість міграції коду - посібник.


2

Я працював як із інструментами даних сервера Sql, так і з простірним шляхом. Використовуючи SSDT, я отримую такі переваги:

  1. Я можу скласти проект бази даних. Це означає, що немає побоювання випадати стовпчик, на який посилаються перегляд, функція або збережені програми. Це відмінна особливість, адже ми раніше про такі промахи ми виявляли лише після звільнення
  2. Після успішної збірки SSDT генерує те, що відомо як "DACPAC". Подумайте про це msi з версією.

  3. Даний dacpac, скажімо, версія 5, може бути застосований до бази даних, що знаходиться у версії 1,2,3,4 або 6,7,8 Dacpac тощо. Якщо його застосувати до 1-4, база даних буде оновлена. Якщо застосовано до 6,7 тощо, БД буде зменшено / повернути назад. Будуть попередження, якщо буде втрата даних, яку можна придушити. Таким чином, ми отримуємо чудову функцію відкату, яка недоступна для інших інструментів, таких як проліт тощо. Завдяки магістралі необхідно надати новий набір сценаріїв для відкочування.

  4. DACPAC застосовує всі зміни в одній транзакції; Тобто, якщо в оновленнях є 5 змін таблиці, і одна з них не працює, вся транзакція відкочується назад. Flyway також підтримує це, але для кожного файлу.

Однак SSDT і DACPAC є специфічними для Microsoft SQL Server; flyway може використовуватися для різних баз даних.

Отже, підсумок, якщо ви використовуєте лише SQL Server, вирішити проблему з SSDT і DACPAC слід досить просто.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.