Prezentacja powstała na potrzeby prezentacji JUG Bielsko-Biała.
Na początku zaczynamy od postawienia sobie pytania dlaczego liquibase jest nam potrzebny i z jakimi problemami spotykamy się na co dzień podczas zarządzania schematem relacyjnej bazy danych.
W kolejnej części prezentacji odpowiadamy sobie na zadane pytania zgłębiając wiedzę o liquibase
Do prezentacji dołączony jest demo: https://github.com/mlubanski/questionnarie-server
Liquibase - Zarządzanie zmianami w relacyjnych bazach danychMarcinStachniuk
Prezentacja wygłoszona na Wrocławskim JUGu 30 września 2015. Prezentacja opisuje w jaki sposób można zarządzać zmianami w relacyjnych bazach danych i jak ten problem rozwiązuje Liquibase.
Baza danych Oracle od dawna cieszy się zasłużoną sławą. Jest wykorzystywana wszędzie tam, gdzie dba się o stabilność i bezpieczeństwo danych oraz szybkość dostępu do nich. Każda nowa wersja Oracle’a wnosi coś nowego i wytycza nowe standardy. Ogromne możliwości Oracle’a pociągają za sobą konieczność dołączania do niej tysięcy stron dokumentacji. Każdy z opasłych tomów instrukcji szczegółowo opisuje inne elementy systemu. Często jednak podczas pracy z bazą zachodzi konieczność szybkiego odnalezienia konkretnej informacji. W takich przypadkach przydatne okazuje się zestawienie najbardziej istotnych zagadnień, zebranych w jednej publikacji.
W książce "Oracle Database 10g. Kompendium administratora" zebrano wszystkie najważniejsze pojęcia dotyczące bazy danych Oracle. W jednym podręczniku zgromadzone są opisy poleceń, funkcji i właściwości oraz dokumentacja narzędzi dołączanych do Oracle’a. Każdy użytkownik, administrator i programista baz danych znajdzie tu coś, co przyda mu się w pracy. Jednych zainteresuje opis języka SQL, innych -- opis instalacji, konfiguracji i strojenia bazy, a jeszcze inni docenią omówienie zasad tworzenia aplikacji współpracujących z Oracle’em.
* Instalacja bazy danych Oracle 10g
* Planowanie i projektowanie aplikacji bazodanowych
* Język SQL i narzędzie SQL*Plus
* Operacje na danych z wykorzystaniem języka SQL
* Budowanie złożonych zapytań
* Zarządzanie tabelami, perspektywami, indeksami i klastrami
* Mechanizmy bezpieczeństwa bazy danych
* Eksport danych i technologia Data Pump
* Zapytania flashback
* Dołączanie tabel zewnętrznych
* Tworzenie aplikacji w języku PL/SQL
* Strojenie aplikacji i optymalizacja zapytań
Dodatkową pomocą dla użytkowników Oracle’a jest przewodnik po wszystkich jej funkcjach, potencjalnych zastosowaniach i zestawienie poleceń wraz z opcjami i parametrami.
Ta książka powinna znaleźć się na biurku każdego,kto wykorzystuje w pracy bazę Oracle 10g.
Liquibase - Zarządzanie zmianami w relacyjnych bazach danychMarcinStachniuk
Prezentacja wygłoszona na Wrocławskim JUGu 30 września 2015. Prezentacja opisuje w jaki sposób można zarządzać zmianami w relacyjnych bazach danych i jak ten problem rozwiązuje Liquibase.
Baza danych Oracle od dawna cieszy się zasłużoną sławą. Jest wykorzystywana wszędzie tam, gdzie dba się o stabilność i bezpieczeństwo danych oraz szybkość dostępu do nich. Każda nowa wersja Oracle’a wnosi coś nowego i wytycza nowe standardy. Ogromne możliwości Oracle’a pociągają za sobą konieczność dołączania do niej tysięcy stron dokumentacji. Każdy z opasłych tomów instrukcji szczegółowo opisuje inne elementy systemu. Często jednak podczas pracy z bazą zachodzi konieczność szybkiego odnalezienia konkretnej informacji. W takich przypadkach przydatne okazuje się zestawienie najbardziej istotnych zagadnień, zebranych w jednej publikacji.
W książce "Oracle Database 10g. Kompendium administratora" zebrano wszystkie najważniejsze pojęcia dotyczące bazy danych Oracle. W jednym podręczniku zgromadzone są opisy poleceń, funkcji i właściwości oraz dokumentacja narzędzi dołączanych do Oracle’a. Każdy użytkownik, administrator i programista baz danych znajdzie tu coś, co przyda mu się w pracy. Jednych zainteresuje opis języka SQL, innych -- opis instalacji, konfiguracji i strojenia bazy, a jeszcze inni docenią omówienie zasad tworzenia aplikacji współpracujących z Oracle’em.
* Instalacja bazy danych Oracle 10g
* Planowanie i projektowanie aplikacji bazodanowych
* Język SQL i narzędzie SQL*Plus
* Operacje na danych z wykorzystaniem języka SQL
* Budowanie złożonych zapytań
* Zarządzanie tabelami, perspektywami, indeksami i klastrami
* Mechanizmy bezpieczeństwa bazy danych
* Eksport danych i technologia Data Pump
* Zapytania flashback
* Dołączanie tabel zewnętrznych
* Tworzenie aplikacji w języku PL/SQL
* Strojenie aplikacji i optymalizacja zapytań
Dodatkową pomocą dla użytkowników Oracle’a jest przewodnik po wszystkich jej funkcjach, potencjalnych zastosowaniach i zestawienie poleceń wraz z opcjami i parametrami.
Ta książka powinna znaleźć się na biurku każdego,kto wykorzystuje w pracy bazę Oracle 10g.
Food processing is the transformation of raw ingredients, by physical or chemical means into food, or of food into other forms. Food processing combines raw food ingredients to produce marketable food products that can be easily prepared and served by the consumer.
Within three months of deploying TrakSYS™,
Messier-Bugatti was able to identify root causes of the
production problems, prioritize them by their
impact, and focus on measurably improving
production capacity.”
Carbon steels are classified based on the amount of carbon content in the steel. The four main classes are mild and low carbon steel, medium carbon steel, high carbon steel, and ultra-high carbon steel.
Wouter De Geest - Ingénieur dans l'avenir - Ingenieurs in de toekomstGilles Guilmot
"De rol van de ingenieur in de toekomst"
"Le rôle de l’ingénieur dans l’avenir"
Wouter De Geest, CEO BASF
Remise des insignes d'honneurs aux Lauréats du Travail du secteur "Professions et Métiers de l'Ingénieur : Master of Science"
Uitreikingsplechtigheid aan de Laureaten van de Arbeid van de sector "Beroepen & Vakgebieden van de Ingenieur
Master of Science"
Food processing is the transformation of raw ingredients, by physical or chemical means into food, or of food into other forms. Food processing combines raw food ingredients to produce marketable food products that can be easily prepared and served by the consumer.
Within three months of deploying TrakSYS™,
Messier-Bugatti was able to identify root causes of the
production problems, prioritize them by their
impact, and focus on measurably improving
production capacity.”
Carbon steels are classified based on the amount of carbon content in the steel. The four main classes are mild and low carbon steel, medium carbon steel, high carbon steel, and ultra-high carbon steel.
Wouter De Geest - Ingénieur dans l'avenir - Ingenieurs in de toekomstGilles Guilmot
"De rol van de ingenieur in de toekomst"
"Le rôle de l’ingénieur dans l’avenir"
Wouter De Geest, CEO BASF
Remise des insignes d'honneurs aux Lauréats du Travail du secteur "Professions et Métiers de l'Ingénieur : Master of Science"
Uitreikingsplechtigheid aan de Laureaten van de Arbeid van de sector "Beroepen & Vakgebieden van de Ingenieur
Master of Science"
Jak 5 narzędzi złożyło się na sukces hurtowni
Maciek jest kierownikiem projektu hurtowni danych, Przemek liderem zespołu programistów. Razem zaprezentują jakie (darmowe) narzędzia developerskie usprawniły prace programistom oraz jakie pozytywne „efekty uboczne” przyniosły one zarówno w samym projekcie jak i w jego otoczeniu. Następnie przedstawią jak doprowadziło ich to – szybciej niż myśleli – do automatu, który na bieżąco buduje z najnowszych źródeł, wdraża i testuje hurtownię danych.
Wprowadzenie do Kubernetesa oraz omówieni korzyści K8S w kontekście mojego doświadczenia z dwóch startupów, jeden z branży mobile ecommerce i jeden FinTech.
Maintenance Plans zupełnie znienacka | Każdy z doświadczonych administratorów używa (w jakimś stopniu) czegoś co nazywamy Maintenance Plans – Planami Konserwacji. Podczas tej sesji cciałbym omówić do czego mogą nam się one przydać, jakie funkcjonalności dają, kiedy możemy ich użyć i na co należy zwrócić uwagę. Sesja na poziomie 200 chwilami wybiegająca na 300, z otwarciem na dyskusję.
1. Liquibase w praktyce
Mateusz Lubański
JUG Bielsko-Biała
1 września 2016
Mateusz Lubański Liquibase w praktyce 1 września 2016 1 / 30
2. O mnie
Java Developer 5+
Technologie backendowe
Obecnie pracuje w Omnetric
Fan Agile i Scrum
Hobby: narty/kajaki/trekking//salsa
http://linkedin.com/in/mateuszlubanski
Mateusz Lubański Liquibase w praktyce 1 września 2016 2 / 30
3. Podstawowe problemy w zarządzaniu bazą
śledzenie zmian
dane słownikowe
dane testowe
automatyzacja
wersjonowanie
niezależny od środowiska
łatwy
Mateusz Lubański Liquibase w praktyce 1 września 2016 3 / 30
10. Pierwszy changeSet
sql
<changeSet id=”1” author=”mlubanski”>
<sqlFile relativeToChangelogFile=”true” path=”sql/create person.sql”/>
</changeSet>
CREATE TABLE person
(
id serial NOT NULL,
name character varying(100) NOT NULL,
date date DEFAULT now(),
CONSTRAINT pk person PRIMARY KEY (id),
CONSTRAINT person name key UNIQUE (name)
);
xml
<changeSet id=”2” author=”mlubanski”>
<createTable tableName=”USER”>
<column name=”ID” type=”int” autoIncrement=”true” >
<constraints primaryKey=”true” nullable=”false” />
</column>
<column name=”NAME” type=”varchar(100)” >
<constraints nullable=”false” unique=”true”/>
</column>
<column name=”DATE” type=”date” defaultValueComputed=”now()”>
<constraints nullable=”false” />
</column>
</createTable>
</changeSet>
Mateusz Lubański Liquibase w praktyce 1 września 2016 10 / 30
11. Skąd Liquibase wie który skrypt został już wykonany?
id musi być unikalne dla changeLog’a i użytkownika
Liquibase generuje i zapisuje md5sum dla każdego wykonanego
changeSet’a
Główna idea liquibase’a to ciągła liniowa sekwencja zmian na bazie
danych. Podobnie jak przy Versioning Control System nie
modyfikujemy starych commit’ów tak przy liquibas’e nie
modyfikujemy starych changeSet’ów ponieważ możemy zerwać
spójność bazy danych.
Mateusz Lubański Liquibase w praktyce 1 września 2016 11 / 30
12. Skąd Liquibase wie który skrypt został już wykonany?
DATABASECHANGELOGLOCK (liquibase releaseLocks)
LOCKED
LOCKGRANTED
LOCKEDBY
DATABASECHANGELOG
ID
AUTHOR
FILENAME
DATEEXECUTED
EXECTYPE [EXECUTED, FAILED, SKIPPED, RERAN, MARKRAN]
MD5SUM
DESCRIPTION
Mateusz Lubański Liquibase w praktyce 1 września 2016 12 / 30
13. Wspierane Refactorings
create: table, view, procedure, sequence, index
add: column, foreign key, not null, unique, default value, primary key,
autoincrement
drop: ...
rename: column, table, view,
others: insert, load data, sql, sqlFile, modify data type, update
Mateusz Lubański Liquibase w praktyce 1 września 2016 13 / 30
22. Przykładowa struktura
dbchangelogdb.changelog.dev.xml
<property name=”key.type” value=”NUMERIC(10,0)” />
<property name=”name.type” value=”VARCHAR(255)”/>
...
<include file=”R1/db.changelog.master.xml” relativeToChangelogFile=”true” />
<include file=”R2/db.changelog.master.xml” relativeToChangelogFile=”true” />
dbchangelogR1db.changelog.master.xml
<include file=”db.changelog.2016−08.20.xml” relativeToChangelogFile=”true” />
<include file=”db.changelog.2016−08.20.xml” relativeToChangelogFile=”true” />
Mateusz Lubański Liquibase w praktyce 1 września 2016 22 / 30
23. Jak wdrożyć liquibase do istniejącego projektu
1 Generujemy changeLog’a (komenda ta nie eksportuje: Stored
procedures, functions, packages, Triggers)
java −jar ./liquibase−core−3.5.1.jar
db.changelog.xml
generateChangeLog
2 Odpalamy changelogSync który wypełnia nam tabelę
DATABASECHANGELOG wpisami z changeSet’ów bez wykonywania
ich na bazie
java −jar ./liquibase−core−3.5.1.jar
db.changelog.xml
changeLogSync
Mateusz Lubański Liquibase w praktyce 1 września 2016 23 / 30
24. Przydatne triki
Co gdy admin na powie, że on musi mieć SQL’a? :)
java −jar ./liquibase−core−3.5.1.jar
src/main/resources/db/changelog/db.changelog−master.xml
updateSQL > /tmp/script.sql
Czy na pewno baza A jest taka sama jak baza B?
java −jar ./liquibase−core−3.5.1.jar
diffChangeLog
−−referenceUrl=”jdbc:postgresql://localhost:5432/B”
−−referenceUsername=sample
−−referencePassword=topsecret
> diff.database.changelog.xml
Diff Nie wspiera: Non-foreign key constraints (check, etc), Stored
Procedures, Data type length
Mateusz Lubański Liquibase w praktyce 1 września 2016 24 / 30
26. Podsumowanie
śledzenie zmian - spersonalizowane changeSet’y zapisywane w bazie
wraz z dbDoc
dane słownikowe - loadData + .csv
dane testowe - contexts
automatyzacja - libuibase:update
wersjonowanie - include + odpowiednia struktura
niezależny od środowiska - xml
łatwy - umiarkowanie łatwy z wielkimi możliwościami
Mateusz Lubański Liquibase w praktyce 1 września 2016 26 / 30