SSDT jest porównywalny z Liquibase / Flyway, ponieważ robi to, co robi, ale stosując inne podejście. Dzięki SSDT masz środowisko programistyczne, dzięki czemu możesz przejść do definicji, znaleźć referencje i inteligencję, a także możliwość kompilacji projektu w dacpac, a następnie wdrożyć ten dacpac w bazie danych.
Sposobem SSDT (i sposobem porównywania redgate sql) jest zadeklarowanie tego, co chcesz, więc jeśli chcesz zmienić tabelę, która wygląda:
create table a(id int)
do stołu, który wygląda jak:
create table a(id int, another_column varchar(12))
z SSDT po prostu zmieniasz definicję tabeli na drugą i pozwalasz SSDT martwić się o to, jak ją uaktualnić (czy może zrobić zmianę tabeli, dodać kolumnę lub zmienić kolejność kolumn, więc będziesz musiał odbudować tabelę itp.).
W przypadku Liquibase (DbUp, ReadyRoll, metody ręczne itp.) W tym przypadku musisz samodzielnie napisać tabelę zmian i upewnić się, że uruchamiasz skrypty we właściwej kolejności, rozważ ten scenariusz:
- Wersja 1 - utwórz kolumnę witaj na stole
- Wersja 2 - zmień nazwę kolumny hello na joe_blogs
- Wersja 3 - zmień nazwę kolumny joe_blogs na witaj
- Wersja 4 - utwórz kolumnę joe_blogs
Jeśli któreś z wydań zostanie pominięte, żadne z następnych nie będzie kontynuowane.
Korzyści ze skryptów aktualizacji (Liquibase, DbUp itp.):
- Masz pełną kontrolę nad skryptami
- DBA / Developerzy są do tego przyzwyczajeni
Korzyści z porównania / scalenia (SSDT, Redgate SQL Compare):
- Nie musisz pisać skryptów aktualizacji
- Łatwo jest przejść do dowolnej konkretnej wersji, wystarczy ją porównać i połączyć
Wady skryptów aktualizacji:
- Musi być uruchamiany w kolejności
- Polegaj na ludziach, którzy nie popełniają błędów
- Może być powolny, szczególnie jeśli masz wiele zmian
- O ile Twój zespół nie jest bardzo zdyscyplinowany, bazy danych w różnych środowiskach (programowanie, testowanie, przemieszczanie, prod itp.) Często nie są zsynchronizowane, co powoduje nieprawidłowe testowanie
- Obniżenie wersji oznacza napisanie na odwrót wszystkich skryptów, które już napisałeś
Wady używania porównania / scalania:
- Narzędzia nie są w 100% zaufane, być może niesprawiedliwe
- SSDT wymaga działającego projektu, wiele baz danych ma kod, który tak naprawdę nie kompiluje się ani nie uruchamia (myślę, że usunięte tabele, ale nie procedury itp.), Widziałem to w około 8/10 bazach danych, które odziedziczyłem :)
- Wielu programistów / programistów DBA nie chce zrezygnować z programowania w SSMS / notatniku
Osobiście uważam, że SSDT jest profesjonalnym środowiskiem programistycznym i oznacza, że mogę skoncentrować się na pisaniu przydatnego kodu i testów zamiast na pisaniu skryptów aktualizacyjnych, które same w sobie są jedynie środkiem do celu.
Prosiłeś o opinie, więc proszę :)
wyd