Upload
marcinstachniuk
View
22
Download
4
Embed Size (px)
Citation preview
Zarządzanie zmianami w schemacie relacyjnychbaz danych
Marcin [email protected]
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 wbazie 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 cozrobił 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 cozrobił 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 cozrobił 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 cozrobił 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 cozrobił 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 cozrobił 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ę bazadanych
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ę bazadanych
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ę bazadanych
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ę bazadanych
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ę bazadanych
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ę bazadanych
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ę bazadanych
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ć proceswprowadzania zmian w bazie danych?
Zautomatyzować tyle ile sie da
Progamiści powinni mieć swoje instancje bazy
Programiści muszą mieć możliwość tworzenia i uruchamianiapowtarzalnych 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ć proceswprowadzania zmian w bazie danych?
Zautomatyzować tyle ile sie da
Progamiści powinni mieć swoje instancje bazy
Programiści muszą mieć możliwość tworzenia i uruchamianiapowtarzalnych 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ć proceswprowadzania zmian w bazie danych?
Zautomatyzować tyle ile sie da
Progamiści powinni mieć swoje instancje bazy
Programiści muszą mieć możliwość tworzenia i uruchamianiapowtarzalnych 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ć proceswprowadzania zmian w bazie danych?
Zautomatyzować tyle ile sie da
Progamiści powinni mieć swoje instancje bazy
Programiści muszą mieć możliwość tworzenia i uruchamianiapowtarzalnych 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ć proceswprowadzania zmian w bazie danych?
Zautomatyzować tyle ile sie da
Progamiści powinni mieć swoje instancje bazy
Programiści muszą mieć możliwość tworzenia i uruchamianiapowtarzalnych 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 bazydanych
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 bazydanych
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 bazydanych
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 bazydanych
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 bazydanych
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 bazydanych
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.htmlhttp://www.clker.com/clipart-image-of-person.htmlhttp://www.clker.com/clipart-blue-collar-worker.htmlhttp://www.clker.com/clipart-247488.htmlhttp://www.clker.com/clipart-1796.htmlhttp://www.clker.com/clipart-database-symbol-1.htmlhttp://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.comLiquibase: http://www.liquibase.org/Feature Comparison (Flyway): http://flywaydb.org/#featuresLiquibase 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 relacyjnychbaz danych
Marcin [email protected]
http://mstachniuk.blogspot.com@MarcinStachniuk
Dziękuję!24 października 2014
Marcin Stachniuk Zarządzanie zmianami w schemacie relacyjnych baz danych 43/43