Skip to content
rozepsání řešeného příkladu authored by Jiří Fejfar's avatar Jiří Fejfar
...@@ -20,12 +20,12 @@ Posluchači by asi měli mít základní představu o PG, gitu, dockeru. ...@@ -20,12 +20,12 @@ Posluchači by asi měli mít základní představu o PG, gitu, dockeru.
# obsah školení (návrh) # obsah školení (návrh)
## I. Seznámení s technologiemi (1.5 h) ## 1) Seznámení s technologiemi (1.5 h)
Posluchač se seznámí se základními technologiemi. Posluchač se seznámí se základními technologiemi.
Výsledkem je funkční "individualizované" vývojové prostředí a nastavéné spouštění regresních testů na straně gitlabu. Výsledkem je funkční "individualizované" vývojové prostředí a nastavéné spouštění regresních testů na straně gitlabu.
### 1) prostředí Dockeru (30 min) ### 1a) prostředí Dockeru (30 min)
* Dockerfile * Dockerfile
* způsob "baremetal instalace" vs. [Postgres image](https://hub.docker.com/_/postgres/) * způsob "baremetal instalace" vs. [Postgres image](https://hub.docker.com/_/postgres/)
...@@ -35,14 +35,14 @@ Výsledkem je funkční "individualizované" vývojové prostředí a nastavén ...@@ -35,14 +35,14 @@ Výsledkem je funkční "individualizované" vývojové prostředí a nastavén
* manuální spouštění testů a práce v DB (psql) * manuální spouštění testů a práce v DB (psql)
* připojení zevnějšku kontejneru pomocí pgAdmin4 / QGIS * připojení zevnějšku kontejneru pomocí pgAdmin4 / QGIS
### 2) PostgreSQL extenze (45 min) ### 2b) PostgreSQL extenze (45 min)
* PG extenze a metodika Evolutionary Database Design (viz [martiflower.com](https://www.martinfowler.com/articles/evodb.html), [wiki](https://en.wikipedia.org/wiki/Evolutionary_database_design)) * PG extenze a metodika Evolutionary Database Design (viz [martiflower.com](https://www.martinfowler.com/articles/evodb.html), [wiki](https://en.wikipedia.org/wiki/Evolutionary_database_design))
* updatescripty, makefile a controlfile * updatescripty, makefile a controlfile
* statická (configuration tables) a dynamická data * statická (configuration tables) a dynamická data
* regresní testy * regresní testy
### 3) propojení s GitLab CI/CD (15 min) ### 3c) propojení s GitLab CI/CD (15 min)
* upload Docker image do prostředí GitLab * upload Docker image do prostředí GitLab
* konfigurační soubor .gitlab-ci.yml * konfigurační soubor .gitlab-ci.yml
...@@ -50,14 +50,25 @@ Výsledkem je funkční "individualizované" vývojové prostředí a nastavén ...@@ -50,14 +50,25 @@ Výsledkem je funkční "individualizované" vývojové prostředí a nastavén
* speciality gitlab -- webový editor (je možné vynechat) * speciality gitlab -- webový editor (je možné vynechat)
* deploy výsledku na statické stránky (je možné vynechat) * deploy výsledku na statické stránky (je možné vynechat)
## II. otázky / rezerva (0.5 h) -- je možné zařadit úplně na konec ## 2) otázky / rezerva (0.5 h) -- je možné zařadit úplně na konec
## III. praktické cvičení (1.5 h) ## 3) praktické cvičení (1.5 h)
* ukázka vývoje DB aplikace cca metodikou EDD: issues, git větvě, merge, preprodukce, produkce Ukázka vývoje DB aplikace cca metodikou EDD: issues, git větvě, merge, preprodukce, produkce.
### zadání ### 3a) zadání úkolu
Vytvoříme jednoduchou databázi zákazníků seskupených do skupin podle obchodníků, kteří je mají na starost. Vytvoříme jednoduchou databázi zákazníků seskupených do skupin podle obchodníků, kteří je mají na starost.
Z adres zákazníků vytvoříme geografickou polohu a zhodnotíme efektivnost rozčlenění zákazníků mezi obchodníky. Z adres zákazníků vytvoříme geografickou polohu a zhodnotíme efektivnost rozčlenění zákazníků mezi obchodníky z hlediska polohy.
Volitelně je možné implementovat funkce hledající optimální cestu mezi zákazníky atp. Volitelně je možné implementovat funkce hledající optimální cestu mezi zákazníky atp (geoaplikace).
Volitelně je možné sledovat kupříkladu tržby od zákazníků a dávat je do souvislosti s obchodníky (statistika).
### 3b) způsob řešení
* aktivní účastnící si zvolí svoje issue, které řeší, výsledkem je updatescript
* tabulka zákazníků
* tabulka obchodníků
* přidání sloupce s geometrií
* funkce pro převod adresy na geometrii
* průběžně je možné monitorovat ve větvích postup a dále hodnotit kvalitu updateskriptů při mergerequestu
* účastníci kteří se nechtějí zapojit mohou sledovat celý postup případně na lokálním prostředí experimentovat