Kluczową różnicą między samodzielnie zarządzanym plikiem tworzenia schematu a Liquibase (lub innymi narzędziami do migracji schematu ) jest to, że ten ostatni udostępnia dziennik zmian schematu. To jest zapis zmian schematu w czasie. Pozwala projektantowi bazy danych na określenie zmian w schemacie i umożliwia programową aktualizację lub downgrade schematu na żądanie.
Istnieją inne korzyści, takie jak:
- Niezależność dostawcy bazy danych (jest to wątpliwe, ale próbują)
- zautomatyzowana dokumentacja
- różnice w schemacie bazy danych
Jednym z alternatywnych narzędzi jest flyway .
Możesz zdecydować się na użycie narzędzia do migracji schematu, gdy chcesz lub musisz automatycznie zarządzać aktualizacjami schematu bez utraty danych. Oznacza to, że po wdrożeniu systemu w długotrwałym środowisku, takim jak lokacja klienta lub stabilne środowisko testowe, spodziewasz się zmiany schematu.
Widziałem, jak liquibase tworzy dyscyplinę wśród programistów, jeśli chodzi o modyfikowanie schematu. Po prostu nie możesz przejść i nadpisać zmiany i wykonania innego programisty. Zamiast tego tworzysz swój własny zestaw zmian i dodajesz go na końcu sekwencji zmian do wykonania. Daje to również jasność co do tego, jaka zmiana nastąpiła, kiedy i kto ją przyniósł.
Bardzo "wersjonowane" podejście do utrzymania schematu.
Na początek jednak sprawia wrażenie „niepotrzebnej pracy”.
źródło
Jeśli masz wiele instancji bazy danych w dev, qa, production i chcesz mieć narzędzie do automatycznego śledzenia historii zmian i inteligentnego wprowadzania zmian (zastosuj różnicę bieżącego schematu i ostatecznego schematu), narzędzia takie jak liquibase lub flyway będą bardzo przydatne .
źródło
Uważam, że Liquibase jest świetny, gdy Twoja filozofia polega na tym, że baza danych jest po namyśle. Ta filozofia spowodowała, że większość złych baz danych jest w produkcji - a większość z nich jest zła. Baza danych powinna być zaprojektowana z pełnym widokiem całego systemu biznesowego, a nie tworzona przez programistów aplikacji pracujących we własnych silosach. Ta ostatnia metoda prowadzi do obejść, zdenormalizowanych danych, słabych relacji między tabelami, powielania obszarów biznesowych i ogólnie niechlujnego systemu o wysokich kosztach utrzymania, którego klient będzie nienawidził wkrótce po wdrożeniu z powodu problemów, które powoduje. Jeśli baza danych jest zaprojektowana tak, aby DOKŁADNIE odzwierciedlała relacje biznesowe, jej żywotność będzie 5 razy dłuższa i będzie służyć swojemu celowi 5 razy lepiej niż baza danych zaprojektowana w sposób fragmentaryczny, jak niestety większość.
Liquibase nie jest problemem sam w sobie, ale umożliwia praktykę, w której programiści aplikacji projektują bazę danych. To jest problem.
źródło
Myślę, że można odpowiedzieć na pytanie, dlaczego liquidibase przeczytasz w poniższym artykule http://shengwangi.blogspot.com/2016/04/liquibase-helloworld-example.html
Jeśli uważnie ją przeczytasz, możliwość przejścia na niższą wersję z wyższej wersji za pomocą prostych poleceń mvn lub CLI jest bardzo przydatna, czego nie otrzymasz, jeśli przejdziesz przez podejście polegające na zatwierdzeniu pliku sql do GIT, ponieważ wtedy musisz ręcznie uruchamiać te skrypty, a także nie masz zestawu zmian, takich jak: - kto wprowadził zmiany, autor itp.
źródło
Będąc osobą DevOps w moim zespole, wolałbym mieć wszystkie moje pliki SQL w jednym miejscu, tj. W moim SCM (Source Code Management)
Również podczas CI fazy / CD, jeśli schemat bazy danych zostanie utworzony wraz z nim, oszczędza to dużo czasu i zasobów. Nie musiałbyś mieć innej osoby zarządzającej bazą danych dla tego klienta.
ORM, takie jak Flyway, Liquibase, EF itp., Pomaga w osiągnięciu tego.
źródło