SlideShare a Scribd company logo
Zarządzanie zmianami w schemacie relacyjnych
baz danych
Marcin Stachniuk
mstachniuk@gmail.com
http://mstachniuk.blogspot.com
@MarcinStachniuk
24 października 2014
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 1/43
Przykładowa struktura korporacji
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 2/43
Przykładowa struktura korporacji
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 3/43
Jak działa projekt w korporacji?
Jak zarządzane są zmiany w
bazie danych?
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 4/43
Zespół programistów i bazodanowców działa osobno
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 5/43
Zespół programistów i bazodanowców działa osobno
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 6/43
Zespół programistów i bazodanowców działa osobno
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 7/43
Zespół programistów i bazodanowców działa osobno
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 8/43
Zespół programistów i bazodanowców działa osobno
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 9/43
Zespół programistów i bazodanowców działa osobno
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 10/43
Zespół programistów i bazodanowców działa osobno
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 11/43
Zespół programistów i bazodanowców działa osobno
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 12/43
Zespół programistów i bazodanowców działa osobno
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 13/43
Zespół programistów i bazodanowców działa osobno
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 14/43
Zespół programistów i bazodanowców działa osobno
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 15/43
Zespół programistów i bazodanowców działa osobno
Wady takiego podejścia:
Częste błędy Copy Paste
Zmiany w bazie danych trzeba zgrać z wdrożeniem
Praca bazodanowca sprowadza się do prostych,
mechanicznych czynności
Długie przestoje w trakcie wykonywania zmian
Rozmyta odpowiedzialność
Częste błędy miedzy tym czego oczekiwał programista, a co
zrobił bazodanowiec
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
Zespół programistów i bazodanowców działa osobno
Wady takiego podejścia:
Częste błędy Copy Paste
Zmiany w bazie danych trzeba zgrać z wdrożeniem
Praca bazodanowca sprowadza się do prostych,
mechanicznych czynności
Długie przestoje w trakcie wykonywania zmian
Rozmyta odpowiedzialność
Częste błędy miedzy tym czego oczekiwał programista, a co
zrobił bazodanowiec
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
Zespół programistów i bazodanowców działa osobno
Wady takiego podejścia:
Częste błędy Copy Paste
Zmiany w bazie danych trzeba zgrać z wdrożeniem
Praca bazodanowca sprowadza się do prostych,
mechanicznych czynności
Długie przestoje w trakcie wykonywania zmian
Rozmyta odpowiedzialność
Częste błędy miedzy tym czego oczekiwał programista, a co
zrobił bazodanowiec
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
Zespół programistów i bazodanowców działa osobno
Wady takiego podejścia:
Częste błędy Copy Paste
Zmiany w bazie danych trzeba zgrać z wdrożeniem
Praca bazodanowca sprowadza się do prostych,
mechanicznych czynności
Długie przestoje w trakcie wykonywania zmian
Rozmyta odpowiedzialność
Częste błędy miedzy tym czego oczekiwał programista, a co
zrobił bazodanowiec
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
Zespół programistów i bazodanowców działa osobno
Wady takiego podejścia:
Częste błędy Copy Paste
Zmiany w bazie danych trzeba zgrać z wdrożeniem
Praca bazodanowca sprowadza się do prostych,
mechanicznych czynności
Długie przestoje w trakcie wykonywania zmian
Rozmyta odpowiedzialność
Częste błędy miedzy tym czego oczekiwał programista, a co
zrobił bazodanowiec
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
Zespół programistów i bazodanowców działa osobno
Wady takiego podejścia:
Częste błędy Copy Paste
Zmiany w bazie danych trzeba zgrać z wdrożeniem
Praca bazodanowca sprowadza się do prostych,
mechanicznych czynności
Długie przestoje w trakcie wykonywania zmian
Rozmyta odpowiedzialność
Częste błędy miedzy tym czego oczekiwał programista, a co
zrobił bazodanowiec
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
Zespół programistów i bazodanowców działa osobno
Zalety (?) takiego podejścia:
Oddzielone role programisty i bazodanowca
Każdy się specjalizuje w swojej części
Mniej osób robi zmiany w bazie
Bazodanowcy są odpowiedzialni za backup, uptime, itd.
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 17/43
Zespół programistów i bazodanowców działa osobno
Zalety (?) takiego podejścia:
Oddzielone role programisty i bazodanowca
Każdy się specjalizuje w swojej części
Mniej osób robi zmiany w bazie
Bazodanowcy są odpowiedzialni za backup, uptime, itd.
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 17/43
Zespół programistów i bazodanowców działa osobno
Zalety (?) takiego podejścia:
Oddzielone role programisty i bazodanowca
Każdy się specjalizuje w swojej części
Mniej osób robi zmiany w bazie
Bazodanowcy są odpowiedzialni za backup, uptime, itd.
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 17/43
Jak to zmienić?
A czy można jakoś inaczej?
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 18/43
Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 19/43
Liquibase
Podstawowe właściwości:
Raz definiujemy wygląd naszej bazy
Uruchamiamy na wielu wspieranych bazach danych
Mamy dokumentację zmian
Możemy generować różnice (diff’y)
Generuje SQL do review dla DBA
Wykonuje migrację od punktu w jakim znajduje się baza
danych
Współpracuje z: Ant, Maven, Spring, Command Line, Servlet,
JEE CDI
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
Liquibase
Podstawowe właściwości:
Raz definiujemy wygląd naszej bazy
Uruchamiamy na wielu wspieranych bazach danych
Mamy dokumentację zmian
Możemy generować różnice (diff’y)
Generuje SQL do review dla DBA
Wykonuje migrację od punktu w jakim znajduje się baza
danych
Współpracuje z: Ant, Maven, Spring, Command Line, Servlet,
JEE CDI
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
Liquibase
Podstawowe właściwości:
Raz definiujemy wygląd naszej bazy
Uruchamiamy na wielu wspieranych bazach danych
Mamy dokumentację zmian
Możemy generować różnice (diff’y)
Generuje SQL do review dla DBA
Wykonuje migrację od punktu w jakim znajduje się baza
danych
Współpracuje z: Ant, Maven, Spring, Command Line, Servlet,
JEE CDI
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
Liquibase
Podstawowe właściwości:
Raz definiujemy wygląd naszej bazy
Uruchamiamy na wielu wspieranych bazach danych
Mamy dokumentację zmian
Możemy generować różnice (diff’y)
Generuje SQL do review dla DBA
Wykonuje migrację od punktu w jakim znajduje się baza
danych
Współpracuje z: Ant, Maven, Spring, Command Line, Servlet,
JEE CDI
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
Liquibase
Podstawowe właściwości:
Raz definiujemy wygląd naszej bazy
Uruchamiamy na wielu wspieranych bazach danych
Mamy dokumentację zmian
Możemy generować różnice (diff’y)
Generuje SQL do review dla DBA
Wykonuje migrację od punktu w jakim znajduje się baza
danych
Współpracuje z: Ant, Maven, Spring, Command Line, Servlet,
JEE CDI
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
Liquibase
Podstawowe właściwości:
Raz definiujemy wygląd naszej bazy
Uruchamiamy na wielu wspieranych bazach danych
Mamy dokumentację zmian
Możemy generować różnice (diff’y)
Generuje SQL do review dla DBA
Wykonuje migrację od punktu w jakim znajduje się baza
danych
Współpracuje z: Ant, Maven, Spring, Command Line, Servlet,
JEE CDI
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
Liquibase
Podstawowe właściwości:
Raz definiujemy wygląd naszej bazy
Uruchamiamy na wielu wspieranych bazach danych
Mamy dokumentację zmian
Możemy generować różnice (diff’y)
Generuje SQL do review dla DBA
Wykonuje migrację od punktu w jakim znajduje się baza
danych
Współpracuje z: Ant, Maven, Spring, Command Line, Servlet,
JEE CDI
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
Jak działa Liquibase? liquibase:update
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 21/43
Jak działa Liquibase? liquibase:updateSQL
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 22/43
Przykładowy workflow z Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 23/43
Przykładowy workflow z Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 24/43
Przykładowy workflow z Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 25/43
Przykładowy workflow z Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 26/43
Przykładowy workflow z Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 27/43
Przykładowy workflow z Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 28/43
Przykładowy workflow z Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 29/43
Przykładowy workflow z Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 30/43
Przykładowy workflow z Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 31/43
Zespół programistów i bazodanowców działa razem
Wady takiego podejścia:
Wybór formatu pliku (XML, YAML, JSON, SQL)
Wszelkie zmiany muszą być wykonowane przez Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 32/43
Zespół programistów i bazodanowców działa razem
Wady takiego podejścia:
Wybór formatu pliku (XML, YAML, JSON, SQL)
Wszelkie zmiany muszą być wykonowane przez Liquibase
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 32/43
Zespół programistów i bazodanowców działa razem
Zalety takiego podejścia:
Eliminacja błędów Copy Paste
Działa od razu na wielu bazach
Bezbolesne aktualizacje, nawet ze starych wersji
Pełna automatyzacja
Schemat bazy jest wersjonowany razem z kodem
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 33/43
Zespół programistów i bazodanowców działa razem
Zalety takiego podejścia:
Eliminacja błędów Copy Paste
Działa od razu na wielu bazach
Bezbolesne aktualizacje, nawet ze starych wersji
Pełna automatyzacja
Schemat bazy jest wersjonowany razem z kodem
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 33/43
Zespół programistów i bazodanowców działa razem
Zalety takiego podejścia:
Eliminacja błędów Copy Paste
Działa od razu na wielu bazach
Bezbolesne aktualizacje, nawet ze starych wersji
Pełna automatyzacja
Schemat bazy jest wersjonowany razem z kodem
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 33/43
Zespół programistów i bazodanowców działa razem
Zalety takiego podejścia:
Eliminacja błędów Copy Paste
Działa od razu na wielu bazach
Bezbolesne aktualizacje, nawet ze starych wersji
Pełna automatyzacja
Schemat bazy jest wersjonowany razem z kodem
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 33/43
Zespół programistów i bazodanowców działa razem
Zalety takiego podejścia:
Eliminacja błędów Copy Paste
Działa od razu na wielu bazach
Bezbolesne aktualizacje, nawet ze starych wersji
Pełna automatyzacja
Schemat bazy jest wersjonowany razem z kodem
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 33/43
Wariant pośredni
Jak sobie radzić, gdy nie do końca można zautomatyzować proces
wprowadzania zmian w bazie danych?
Zautomatyzować tyle ile sie da
Progamiści powinni mieć swoje instancje bazy
Programiści muszą mieć możliwość tworzenia i uruchamiania
powtarzalnych testów (najlepiej na docelowej bazie)
Test porównujący schemat bazy danych
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 34/43
Wariant pośredni
Jak sobie radzić, gdy nie do końca można zautomatyzować proces
wprowadzania zmian w bazie danych?
Zautomatyzować tyle ile sie da
Progamiści powinni mieć swoje instancje bazy
Programiści muszą mieć możliwość tworzenia i uruchamiania
powtarzalnych testów (najlepiej na docelowej bazie)
Test porównujący schemat bazy danych
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 34/43
Wariant pośredni
Jak sobie radzić, gdy nie do końca można zautomatyzować proces
wprowadzania zmian w bazie danych?
Zautomatyzować tyle ile sie da
Progamiści powinni mieć swoje instancje bazy
Programiści muszą mieć możliwość tworzenia i uruchamiania
powtarzalnych testów (najlepiej na docelowej bazie)
Test porównujący schemat bazy danych
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 34/43
Wariant pośredni
Jak sobie radzić, gdy nie do końca można zautomatyzować proces
wprowadzania zmian w bazie danych?
Zautomatyzować tyle ile sie da
Progamiści powinni mieć swoje instancje bazy
Programiści muszą mieć możliwość tworzenia i uruchamiania
powtarzalnych testów (najlepiej na docelowej bazie)
Test porównujący schemat bazy danych
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 34/43
Wariant pośredni
Jak sobie radzić, gdy nie do końca można zautomatyzować proces
wprowadzania zmian w bazie danych?
Zautomatyzować tyle ile sie da
Progamiści powinni mieć swoje instancje bazy
Programiści muszą mieć możliwość tworzenia i uruchamiania
powtarzalnych testów (najlepiej na docelowej bazie)
Test porównujący schemat bazy danych
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 34/43
Lepsza struktura organizacji
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 35/43
Dobre praktyki korzystania z Liquibase
Organizacja Changelog’ów w wiele plików (plik / release)
Zarządzanie procedurami składowanymi przez Liquibase
Jedna zmiana na jeden ChangeSet
Konwencja nazewnicza dla ID w ChangeSet’ach
Komentarze w ChangeSet’ach
Myśl od rolback’u
http://www.liquibase.org/bestpractices.html
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
Dobre praktyki korzystania z Liquibase
Organizacja Changelog’ów w wiele plików (plik / release)
Zarządzanie procedurami składowanymi przez Liquibase
Jedna zmiana na jeden ChangeSet
Konwencja nazewnicza dla ID w ChangeSet’ach
Komentarze w ChangeSet’ach
Myśl od rolback’u
http://www.liquibase.org/bestpractices.html
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
Dobre praktyki korzystania z Liquibase
Organizacja Changelog’ów w wiele plików (plik / release)
Zarządzanie procedurami składowanymi przez Liquibase
Jedna zmiana na jeden ChangeSet
Konwencja nazewnicza dla ID w ChangeSet’ach
Komentarze w ChangeSet’ach
Myśl od rolback’u
http://www.liquibase.org/bestpractices.html
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
Dobre praktyki korzystania z Liquibase
Organizacja Changelog’ów w wiele plików (plik / release)
Zarządzanie procedurami składowanymi przez Liquibase
Jedna zmiana na jeden ChangeSet
Konwencja nazewnicza dla ID w ChangeSet’ach
Komentarze w ChangeSet’ach
Myśl od rolback’u
http://www.liquibase.org/bestpractices.html
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
Dobre praktyki korzystania z Liquibase
Organizacja Changelog’ów w wiele plików (plik / release)
Zarządzanie procedurami składowanymi przez Liquibase
Jedna zmiana na jeden ChangeSet
Konwencja nazewnicza dla ID w ChangeSet’ach
Komentarze w ChangeSet’ach
Myśl od rolback’u
http://www.liquibase.org/bestpractices.html
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
Dobre praktyki korzystania z Liquibase
Organizacja Changelog’ów w wiele plików (plik / release)
Zarządzanie procedurami składowanymi przez Liquibase
Jedna zmiana na jeden ChangeSet
Konwencja nazewnicza dla ID w ChangeSet’ach
Komentarze w ChangeSet’ach
Myśl od rolback’u
http://www.liquibase.org/bestpractices.html
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
Wspierane bazy danych
MySQL
PostgreSQL
Oracle
Sql Server
Sybase
DB2
Derby
HSQLDB
H2
Informix
Firebird
SQLite
InterSystems Cache
SAP MaxDB
IBM DB2 for iSeries
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 37/43
Co może jeszcze Liquibase?
Generowanie ChangeLog’a na podstawie aktualnej bazy
danych
Context’y, Preconditions
Parameters
Możliwość wygenerowania Rollback’ów
Porównywanie baz danych
Generowanie dokumentacji bazy w stylu JavaDoc
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
Co może jeszcze Liquibase?
Generowanie ChangeLog’a na podstawie aktualnej bazy
danych
Context’y, Preconditions
Parameters
Możliwość wygenerowania Rollback’ów
Porównywanie baz danych
Generowanie dokumentacji bazy w stylu JavaDoc
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
Co może jeszcze Liquibase?
Generowanie ChangeLog’a na podstawie aktualnej bazy
danych
Context’y, Preconditions
Parameters
Możliwość wygenerowania Rollback’ów
Porównywanie baz danych
Generowanie dokumentacji bazy w stylu JavaDoc
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
Co może jeszcze Liquibase?
Generowanie ChangeLog’a na podstawie aktualnej bazy
danych
Context’y, Preconditions
Parameters
Możliwość wygenerowania Rollback’ów
Porównywanie baz danych
Generowanie dokumentacji bazy w stylu JavaDoc
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
Co może jeszcze Liquibase?
Generowanie ChangeLog’a na podstawie aktualnej bazy
danych
Context’y, Preconditions
Parameters
Możliwość wygenerowania Rollback’ów
Porównywanie baz danych
Generowanie dokumentacji bazy w stylu JavaDoc
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
Co może jeszcze Liquibase?
Generowanie ChangeLog’a na podstawie aktualnej bazy
danych
Context’y, Preconditions
Parameters
Możliwość wygenerowania Rollback’ów
Porównywanie baz danych
Generowanie dokumentacji bazy w stylu JavaDoc
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
Alternatywne rozwiązania
Flyway
c5-db-migration
dbdeploy
mybatis2
MIGRATEdb
migrate4j
dbmaintain
AutoPatch
Porównanie systemów: http://flywaydb.org/#features
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 39/43
Pytania
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 40/43
Obrazki
http://www.clker.com/clipart-business-man-2.html
http://www.clker.com/clipart-image-of-person.html
http://www.clker.com/clipart-blue-collar-worker.html
http://www.clker.com/clipart-247488.html
http://www.clker.com/clipart-1796.html
http://www.clker.com/clipart-database-symbol-1.html
http://www.clker.com/clipart-interrogante-1.html
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 41/43
More Info
Marcin Stachniuk Blog: mstachniuk.blogspot.com
Liquibase: http://www.liquibase.org/
Feature Comparison (Flyway): http://flywaydb.org/#features
Liquibase best practices:
http://www.liquibase.org/bestpractices.html
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 42/43
Zarządzanie zmianami w schemacie relacyjnych
baz danych
Marcin Stachniuk
mstachniuk@gmail.com
http://mstachniuk.blogspot.com
@MarcinStachniuk
Dziękuję!
24 października 2014
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 43/43

More Related Content

Similar to Zarządzanie zmianami w schemacie relacyjnych baz danych

VirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting ServicesVirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting ServicesSSAS.PL
 
Programowanie Komponentowe: #6 Wersjonowanie
Programowanie Komponentowe: #6 WersjonowanieProgramowanie Komponentowe: #6 Wersjonowanie
Programowanie Komponentowe: #6 WersjonowanieMikołaj Olszewski
 
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITaWersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
marekmisztal
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
Paweł Tekliński
 
university day 1
university day 1university day 1
university day 1
Sławomir Borowiec
 
Integracja liquibase ze stroną internetową dla zarządzania bazami danych[авто...
Integracja liquibase ze stroną internetową dla zarządzania bazami danych[авто...Integracja liquibase ze stroną internetową dla zarządzania bazami danych[авто...
Integracja liquibase ze stroną internetową dla zarządzania bazami danych[авто...
Sofiia Lahoda
 
Integracja liquibase ze stroną internetową dla zarządzania mapami
Integracja liquibase ze stroną internetową dla zarządzania mapami Integracja liquibase ze stroną internetową dla zarządzania mapami
Integracja liquibase ze stroną internetową dla zarządzania mapami
Sofiia Lahoda
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
Tomasz Borowski
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
tkryskiewicz
 

Similar to Zarządzanie zmianami w schemacie relacyjnych baz danych (9)

VirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting ServicesVirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting Services
 
Programowanie Komponentowe: #6 Wersjonowanie
Programowanie Komponentowe: #6 WersjonowanieProgramowanie Komponentowe: #6 Wersjonowanie
Programowanie Komponentowe: #6 Wersjonowanie
 
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITaWersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
 
university day 1
university day 1university day 1
university day 1
 
Integracja liquibase ze stroną internetową dla zarządzania bazami danych[авто...
Integracja liquibase ze stroną internetową dla zarządzania bazami danych[авто...Integracja liquibase ze stroną internetową dla zarządzania bazami danych[авто...
Integracja liquibase ze stroną internetową dla zarządzania bazami danych[авто...
 
Integracja liquibase ze stroną internetową dla zarządzania mapami
Integracja liquibase ze stroną internetową dla zarządzania mapami Integracja liquibase ze stroną internetową dla zarządzania mapami
Integracja liquibase ze stroną internetową dla zarządzania mapami
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 

More from MarcinStachniuk

GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademyGraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
MarcinStachniuk
 
Wroclaw GraphQL - GraphQL in Java
Wroclaw GraphQL - GraphQL in JavaWroclaw GraphQL - GraphQL in Java
Wroclaw GraphQL - GraphQL in Java
MarcinStachniuk
 
[DevCrowd] GraphQL - gdy API RESTowe to za mało
[DevCrowd] GraphQL - gdy API RESTowe to za mało[DevCrowd] GraphQL - gdy API RESTowe to za mało
[DevCrowd] GraphQL - gdy API RESTowe to za mało
MarcinStachniuk
 
GraphQL - gdy API RESTowe to za mało
GraphQL - gdy API RESTowe to za małoGraphQL - gdy API RESTowe to za mało
GraphQL - gdy API RESTowe to za mało
MarcinStachniuk
 
BruJUG Brussels GraphQL when RESR API is to less - lessons learned
BruJUG Brussels GraphQL when RESR API is to less - lessons learnedBruJUG Brussels GraphQL when RESR API is to less - lessons learned
BruJUG Brussels GraphQL when RESR API is to less - lessons learned
MarcinStachniuk
 
[WroclawJUG] Continuous Delivery in OSS using Shipkit
[WroclawJUG] Continuous Delivery in OSS using Shipkit[WroclawJUG] Continuous Delivery in OSS using Shipkit
[WroclawJUG] Continuous Delivery in OSS using Shipkit
MarcinStachniuk
 
Continuous Delivery in OSS using Shipkit.org
Continuous Delivery in OSS using Shipkit.orgContinuous Delivery in OSS using Shipkit.org
Continuous Delivery in OSS using Shipkit.org
MarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
MarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
MarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
MarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
MarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
MarcinStachniuk
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
MarcinStachniuk
 
GraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learnedGraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learned
MarcinStachniuk
 
Java Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologiąJava Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologią
MarcinStachniuk
 
Inicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4oInicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4o
MarcinStachniuk
 
Automatic mechanism data migration between relational and object database
Automatic mechanism data migration between relational and object databaseAutomatic mechanism data migration between relational and object database
Automatic mechanism data migration between relational and object database
MarcinStachniuk
 
Zastosowanie obiektowych baz danych na przykładzie db4o
Zastosowanie obiektowych baz danych na przykładzie db4oZastosowanie obiektowych baz danych na przykładzie db4o
Zastosowanie obiektowych baz danych na przykładzie db4o
MarcinStachniuk
 
Wprowadzenie do J2ME
Wprowadzenie do J2MEWprowadzenie do J2ME
Wprowadzenie do J2ME
MarcinStachniuk
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
MarcinStachniuk
 

More from MarcinStachniuk (20)

GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademyGraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
 
Wroclaw GraphQL - GraphQL in Java
Wroclaw GraphQL - GraphQL in JavaWroclaw GraphQL - GraphQL in Java
Wroclaw GraphQL - GraphQL in Java
 
[DevCrowd] GraphQL - gdy API RESTowe to za mało
[DevCrowd] GraphQL - gdy API RESTowe to za mało[DevCrowd] GraphQL - gdy API RESTowe to za mało
[DevCrowd] GraphQL - gdy API RESTowe to za mało
 
GraphQL - gdy API RESTowe to za mało
GraphQL - gdy API RESTowe to za małoGraphQL - gdy API RESTowe to za mało
GraphQL - gdy API RESTowe to za mało
 
BruJUG Brussels GraphQL when RESR API is to less - lessons learned
BruJUG Brussels GraphQL when RESR API is to less - lessons learnedBruJUG Brussels GraphQL when RESR API is to less - lessons learned
BruJUG Brussels GraphQL when RESR API is to less - lessons learned
 
[WroclawJUG] Continuous Delivery in OSS using Shipkit
[WroclawJUG] Continuous Delivery in OSS using Shipkit[WroclawJUG] Continuous Delivery in OSS using Shipkit
[WroclawJUG] Continuous Delivery in OSS using Shipkit
 
Continuous Delivery in OSS using Shipkit.org
Continuous Delivery in OSS using Shipkit.orgContinuous Delivery in OSS using Shipkit.org
Continuous Delivery in OSS using Shipkit.org
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learnedGraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learned
 
Java Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologiąJava Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologią
 
Inicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4oInicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4o
 
Automatic mechanism data migration between relational and object database
Automatic mechanism data migration between relational and object databaseAutomatic mechanism data migration between relational and object database
Automatic mechanism data migration between relational and object database
 
Zastosowanie obiektowych baz danych na przykładzie db4o
Zastosowanie obiektowych baz danych na przykładzie db4oZastosowanie obiektowych baz danych na przykładzie db4o
Zastosowanie obiektowych baz danych na przykładzie db4o
 
Wprowadzenie do J2ME
Wprowadzenie do J2MEWprowadzenie do J2ME
Wprowadzenie do J2ME
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
 

Zarządzanie zmianami w schemacie relacyjnych baz danych

  • 1. Zarządzanie zmianami w schemacie relacyjnych baz danych Marcin Stachniuk mstachniuk@gmail.com http://mstachniuk.blogspot.com @MarcinStachniuk 24 października 2014 Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 1/43
  • 2. Przykładowa struktura korporacji Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 2/43
  • 3. Przykładowa struktura korporacji Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 3/43
  • 4. Jak działa projekt w korporacji? Jak zarządzane są zmiany w bazie danych? Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 4/43
  • 5. Zespół programistów i bazodanowców działa osobno Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 5/43
  • 6. Zespół programistów i bazodanowców działa osobno Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 6/43
  • 7. Zespół programistów i bazodanowców działa osobno Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 7/43
  • 8. Zespół programistów i bazodanowców działa osobno Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 8/43
  • 9. Zespół programistów i bazodanowców działa osobno Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 9/43
  • 10. Zespół programistów i bazodanowców działa osobno Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 10/43
  • 11. Zespół programistów i bazodanowców działa osobno Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 11/43
  • 12. Zespół programistów i bazodanowców działa osobno Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 12/43
  • 13. Zespół programistów i bazodanowców działa osobno Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 13/43
  • 14. Zespół programistów i bazodanowców działa osobno Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 14/43
  • 15. Zespół programistów i bazodanowców działa osobno Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 15/43
  • 16. Zespół programistów i bazodanowców działa osobno Wady takiego podejścia: Częste błędy Copy Paste Zmiany w bazie danych trzeba zgrać z wdrożeniem Praca bazodanowca sprowadza się do prostych, mechanicznych czynności Długie przestoje w trakcie wykonywania zmian Rozmyta odpowiedzialność Częste błędy miedzy tym czego oczekiwał programista, a co zrobił bazodanowiec Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
  • 17. Zespół programistów i bazodanowców działa osobno Wady takiego podejścia: Częste błędy Copy Paste Zmiany w bazie danych trzeba zgrać z wdrożeniem Praca bazodanowca sprowadza się do prostych, mechanicznych czynności Długie przestoje w trakcie wykonywania zmian Rozmyta odpowiedzialność Częste błędy miedzy tym czego oczekiwał programista, a co zrobił bazodanowiec Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
  • 18. Zespół programistów i bazodanowców działa osobno Wady takiego podejścia: Częste błędy Copy Paste Zmiany w bazie danych trzeba zgrać z wdrożeniem Praca bazodanowca sprowadza się do prostych, mechanicznych czynności Długie przestoje w trakcie wykonywania zmian Rozmyta odpowiedzialność Częste błędy miedzy tym czego oczekiwał programista, a co zrobił bazodanowiec Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
  • 19. Zespół programistów i bazodanowców działa osobno Wady takiego podejścia: Częste błędy Copy Paste Zmiany w bazie danych trzeba zgrać z wdrożeniem Praca bazodanowca sprowadza się do prostych, mechanicznych czynności Długie przestoje w trakcie wykonywania zmian Rozmyta odpowiedzialność Częste błędy miedzy tym czego oczekiwał programista, a co zrobił bazodanowiec Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
  • 20. Zespół programistów i bazodanowców działa osobno Wady takiego podejścia: Częste błędy Copy Paste Zmiany w bazie danych trzeba zgrać z wdrożeniem Praca bazodanowca sprowadza się do prostych, mechanicznych czynności Długie przestoje w trakcie wykonywania zmian Rozmyta odpowiedzialność Częste błędy miedzy tym czego oczekiwał programista, a co zrobił bazodanowiec Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
  • 21. Zespół programistów i bazodanowców działa osobno Wady takiego podejścia: Częste błędy Copy Paste Zmiany w bazie danych trzeba zgrać z wdrożeniem Praca bazodanowca sprowadza się do prostych, mechanicznych czynności Długie przestoje w trakcie wykonywania zmian Rozmyta odpowiedzialność Częste błędy miedzy tym czego oczekiwał programista, a co zrobił bazodanowiec Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 16/43
  • 22. Zespół programistów i bazodanowców działa osobno Zalety (?) takiego podejścia: Oddzielone role programisty i bazodanowca Każdy się specjalizuje w swojej części Mniej osób robi zmiany w bazie Bazodanowcy są odpowiedzialni za backup, uptime, itd. Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 17/43
  • 23. Zespół programistów i bazodanowców działa osobno Zalety (?) takiego podejścia: Oddzielone role programisty i bazodanowca Każdy się specjalizuje w swojej części Mniej osób robi zmiany w bazie Bazodanowcy są odpowiedzialni za backup, uptime, itd. Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 17/43
  • 24. Zespół programistów i bazodanowców działa osobno Zalety (?) takiego podejścia: Oddzielone role programisty i bazodanowca Każdy się specjalizuje w swojej części Mniej osób robi zmiany w bazie Bazodanowcy są odpowiedzialni za backup, uptime, itd. Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 17/43
  • 25. Jak to zmienić? A czy można jakoś inaczej? Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 18/43
  • 26. Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 19/43
  • 27. Liquibase Podstawowe właściwości: Raz definiujemy wygląd naszej bazy Uruchamiamy na wielu wspieranych bazach danych Mamy dokumentację zmian Możemy generować różnice (diff’y) Generuje SQL do review dla DBA Wykonuje migrację od punktu w jakim znajduje się baza danych Współpracuje z: Ant, Maven, Spring, Command Line, Servlet, JEE CDI Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
  • 28. Liquibase Podstawowe właściwości: Raz definiujemy wygląd naszej bazy Uruchamiamy na wielu wspieranych bazach danych Mamy dokumentację zmian Możemy generować różnice (diff’y) Generuje SQL do review dla DBA Wykonuje migrację od punktu w jakim znajduje się baza danych Współpracuje z: Ant, Maven, Spring, Command Line, Servlet, JEE CDI Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
  • 29. Liquibase Podstawowe właściwości: Raz definiujemy wygląd naszej bazy Uruchamiamy na wielu wspieranych bazach danych Mamy dokumentację zmian Możemy generować różnice (diff’y) Generuje SQL do review dla DBA Wykonuje migrację od punktu w jakim znajduje się baza danych Współpracuje z: Ant, Maven, Spring, Command Line, Servlet, JEE CDI Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
  • 30. Liquibase Podstawowe właściwości: Raz definiujemy wygląd naszej bazy Uruchamiamy na wielu wspieranych bazach danych Mamy dokumentację zmian Możemy generować różnice (diff’y) Generuje SQL do review dla DBA Wykonuje migrację od punktu w jakim znajduje się baza danych Współpracuje z: Ant, Maven, Spring, Command Line, Servlet, JEE CDI Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
  • 31. Liquibase Podstawowe właściwości: Raz definiujemy wygląd naszej bazy Uruchamiamy na wielu wspieranych bazach danych Mamy dokumentację zmian Możemy generować różnice (diff’y) Generuje SQL do review dla DBA Wykonuje migrację od punktu w jakim znajduje się baza danych Współpracuje z: Ant, Maven, Spring, Command Line, Servlet, JEE CDI Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
  • 32. Liquibase Podstawowe właściwości: Raz definiujemy wygląd naszej bazy Uruchamiamy na wielu wspieranych bazach danych Mamy dokumentację zmian Możemy generować różnice (diff’y) Generuje SQL do review dla DBA Wykonuje migrację od punktu w jakim znajduje się baza danych Współpracuje z: Ant, Maven, Spring, Command Line, Servlet, JEE CDI Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
  • 33. Liquibase Podstawowe właściwości: Raz definiujemy wygląd naszej bazy Uruchamiamy na wielu wspieranych bazach danych Mamy dokumentację zmian Możemy generować różnice (diff’y) Generuje SQL do review dla DBA Wykonuje migrację od punktu w jakim znajduje się baza danych Współpracuje z: Ant, Maven, Spring, Command Line, Servlet, JEE CDI Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 20/43
  • 34. Jak działa Liquibase? liquibase:update Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 21/43
  • 35. Jak działa Liquibase? liquibase:updateSQL Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 22/43
  • 36. Przykładowy workflow z Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 23/43
  • 37. Przykładowy workflow z Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 24/43
  • 38. Przykładowy workflow z Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 25/43
  • 39. Przykładowy workflow z Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 26/43
  • 40. Przykładowy workflow z Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 27/43
  • 41. Przykładowy workflow z Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 28/43
  • 42. Przykładowy workflow z Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 29/43
  • 43. Przykładowy workflow z Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 30/43
  • 44. Przykładowy workflow z Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 31/43
  • 45. Zespół programistów i bazodanowców działa razem Wady takiego podejścia: Wybór formatu pliku (XML, YAML, JSON, SQL) Wszelkie zmiany muszą być wykonowane przez Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 32/43
  • 46. Zespół programistów i bazodanowców działa razem Wady takiego podejścia: Wybór formatu pliku (XML, YAML, JSON, SQL) Wszelkie zmiany muszą być wykonowane przez Liquibase Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 32/43
  • 47. Zespół programistów i bazodanowców działa razem Zalety takiego podejścia: Eliminacja błędów Copy Paste Działa od razu na wielu bazach Bezbolesne aktualizacje, nawet ze starych wersji Pełna automatyzacja Schemat bazy jest wersjonowany razem z kodem Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 33/43
  • 48. Zespół programistów i bazodanowców działa razem Zalety takiego podejścia: Eliminacja błędów Copy Paste Działa od razu na wielu bazach Bezbolesne aktualizacje, nawet ze starych wersji Pełna automatyzacja Schemat bazy jest wersjonowany razem z kodem Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 33/43
  • 49. Zespół programistów i bazodanowców działa razem Zalety takiego podejścia: Eliminacja błędów Copy Paste Działa od razu na wielu bazach Bezbolesne aktualizacje, nawet ze starych wersji Pełna automatyzacja Schemat bazy jest wersjonowany razem z kodem Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 33/43
  • 50. Zespół programistów i bazodanowców działa razem Zalety takiego podejścia: Eliminacja błędów Copy Paste Działa od razu na wielu bazach Bezbolesne aktualizacje, nawet ze starych wersji Pełna automatyzacja Schemat bazy jest wersjonowany razem z kodem Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 33/43
  • 51. Zespół programistów i bazodanowców działa razem Zalety takiego podejścia: Eliminacja błędów Copy Paste Działa od razu na wielu bazach Bezbolesne aktualizacje, nawet ze starych wersji Pełna automatyzacja Schemat bazy jest wersjonowany razem z kodem Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 33/43
  • 52. Wariant pośredni Jak sobie radzić, gdy nie do końca można zautomatyzować proces wprowadzania zmian w bazie danych? Zautomatyzować tyle ile sie da Progamiści powinni mieć swoje instancje bazy Programiści muszą mieć możliwość tworzenia i uruchamiania powtarzalnych testów (najlepiej na docelowej bazie) Test porównujący schemat bazy danych Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 34/43
  • 53. Wariant pośredni Jak sobie radzić, gdy nie do końca można zautomatyzować proces wprowadzania zmian w bazie danych? Zautomatyzować tyle ile sie da Progamiści powinni mieć swoje instancje bazy Programiści muszą mieć możliwość tworzenia i uruchamiania powtarzalnych testów (najlepiej na docelowej bazie) Test porównujący schemat bazy danych Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 34/43
  • 54. Wariant pośredni Jak sobie radzić, gdy nie do końca można zautomatyzować proces wprowadzania zmian w bazie danych? Zautomatyzować tyle ile sie da Progamiści powinni mieć swoje instancje bazy Programiści muszą mieć możliwość tworzenia i uruchamiania powtarzalnych testów (najlepiej na docelowej bazie) Test porównujący schemat bazy danych Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 34/43
  • 55. Wariant pośredni Jak sobie radzić, gdy nie do końca można zautomatyzować proces wprowadzania zmian w bazie danych? Zautomatyzować tyle ile sie da Progamiści powinni mieć swoje instancje bazy Programiści muszą mieć możliwość tworzenia i uruchamiania powtarzalnych testów (najlepiej na docelowej bazie) Test porównujący schemat bazy danych Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 34/43
  • 56. Wariant pośredni Jak sobie radzić, gdy nie do końca można zautomatyzować proces wprowadzania zmian w bazie danych? Zautomatyzować tyle ile sie da Progamiści powinni mieć swoje instancje bazy Programiści muszą mieć możliwość tworzenia i uruchamiania powtarzalnych testów (najlepiej na docelowej bazie) Test porównujący schemat bazy danych Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 34/43
  • 57. Lepsza struktura organizacji Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 35/43
  • 58. Dobre praktyki korzystania z Liquibase Organizacja Changelog’ów w wiele plików (plik / release) Zarządzanie procedurami składowanymi przez Liquibase Jedna zmiana na jeden ChangeSet Konwencja nazewnicza dla ID w ChangeSet’ach Komentarze w ChangeSet’ach Myśl od rolback’u http://www.liquibase.org/bestpractices.html Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
  • 59. Dobre praktyki korzystania z Liquibase Organizacja Changelog’ów w wiele plików (plik / release) Zarządzanie procedurami składowanymi przez Liquibase Jedna zmiana na jeden ChangeSet Konwencja nazewnicza dla ID w ChangeSet’ach Komentarze w ChangeSet’ach Myśl od rolback’u http://www.liquibase.org/bestpractices.html Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
  • 60. Dobre praktyki korzystania z Liquibase Organizacja Changelog’ów w wiele plików (plik / release) Zarządzanie procedurami składowanymi przez Liquibase Jedna zmiana na jeden ChangeSet Konwencja nazewnicza dla ID w ChangeSet’ach Komentarze w ChangeSet’ach Myśl od rolback’u http://www.liquibase.org/bestpractices.html Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
  • 61. Dobre praktyki korzystania z Liquibase Organizacja Changelog’ów w wiele plików (plik / release) Zarządzanie procedurami składowanymi przez Liquibase Jedna zmiana na jeden ChangeSet Konwencja nazewnicza dla ID w ChangeSet’ach Komentarze w ChangeSet’ach Myśl od rolback’u http://www.liquibase.org/bestpractices.html Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
  • 62. Dobre praktyki korzystania z Liquibase Organizacja Changelog’ów w wiele plików (plik / release) Zarządzanie procedurami składowanymi przez Liquibase Jedna zmiana na jeden ChangeSet Konwencja nazewnicza dla ID w ChangeSet’ach Komentarze w ChangeSet’ach Myśl od rolback’u http://www.liquibase.org/bestpractices.html Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
  • 63. Dobre praktyki korzystania z Liquibase Organizacja Changelog’ów w wiele plików (plik / release) Zarządzanie procedurami składowanymi przez Liquibase Jedna zmiana na jeden ChangeSet Konwencja nazewnicza dla ID w ChangeSet’ach Komentarze w ChangeSet’ach Myśl od rolback’u http://www.liquibase.org/bestpractices.html Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 36/43
  • 64. Wspierane bazy danych MySQL PostgreSQL Oracle Sql Server Sybase DB2 Derby HSQLDB H2 Informix Firebird SQLite InterSystems Cache SAP MaxDB IBM DB2 for iSeries Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 37/43
  • 65. Co może jeszcze Liquibase? Generowanie ChangeLog’a na podstawie aktualnej bazy danych Context’y, Preconditions Parameters Możliwość wygenerowania Rollback’ów Porównywanie baz danych Generowanie dokumentacji bazy w stylu JavaDoc Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
  • 66. Co może jeszcze Liquibase? Generowanie ChangeLog’a na podstawie aktualnej bazy danych Context’y, Preconditions Parameters Możliwość wygenerowania Rollback’ów Porównywanie baz danych Generowanie dokumentacji bazy w stylu JavaDoc Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
  • 67. Co może jeszcze Liquibase? Generowanie ChangeLog’a na podstawie aktualnej bazy danych Context’y, Preconditions Parameters Możliwość wygenerowania Rollback’ów Porównywanie baz danych Generowanie dokumentacji bazy w stylu JavaDoc Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
  • 68. Co może jeszcze Liquibase? Generowanie ChangeLog’a na podstawie aktualnej bazy danych Context’y, Preconditions Parameters Możliwość wygenerowania Rollback’ów Porównywanie baz danych Generowanie dokumentacji bazy w stylu JavaDoc Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
  • 69. Co może jeszcze Liquibase? Generowanie ChangeLog’a na podstawie aktualnej bazy danych Context’y, Preconditions Parameters Możliwość wygenerowania Rollback’ów Porównywanie baz danych Generowanie dokumentacji bazy w stylu JavaDoc Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
  • 70. Co może jeszcze Liquibase? Generowanie ChangeLog’a na podstawie aktualnej bazy danych Context’y, Preconditions Parameters Możliwość wygenerowania Rollback’ów Porównywanie baz danych Generowanie dokumentacji bazy w stylu JavaDoc Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 38/43
  • 71. Alternatywne rozwiązania Flyway c5-db-migration dbdeploy mybatis2 MIGRATEdb migrate4j dbmaintain AutoPatch Porównanie systemów: http://flywaydb.org/#features Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 39/43
  • 72. Pytania Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 40/43
  • 74. More Info Marcin Stachniuk Blog: mstachniuk.blogspot.com Liquibase: http://www.liquibase.org/ Feature Comparison (Flyway): http://flywaydb.org/#features Liquibase best practices: http://www.liquibase.org/bestpractices.html Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 42/43
  • 75. Zarządzanie zmianami w schemacie relacyjnych baz danych Marcin Stachniuk mstachniuk@gmail.com http://mstachniuk.blogspot.com @MarcinStachniuk Dziękuję! 24 października 2014 Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 43/43