zarządzanie zmianami w schemacie relacyjnych baz danych

Post on 21-Jan-2018

23 Views

Category:

Software

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Zarządzanie zmianami w schemacie relacyjnychbaz danych

Marcin Stachniukmstachniuk@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 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 Stachniukmstachniuk@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

top related