Tradiční konference P2D2
Od roku 2008 se obvykle v únoru v Praze koná Prague PostgreSQL Developer Day (P2D2) – konference zaměřená na databázový systém PostgreSQL. Nejinak tomu bylo také letos, kdy se původně jednodenní konference rozšířila na dva dny. Před „hlavní“ konferenční den s přednáškami (což byl letos 18. únor) byl zařazen ještě den se školeními.
Konferenci pořádá Czech and Slovak PostgreSQL Users Group (CSPUG), sdružení českých a slovenských uživatelů PostgreSQL.
Stejně jako ten loňský, také letošní ročník se konal na Fakultě informačních technologií ČVUT v Praze (v dřívějších letech konferenci hostil především bývalý Profesní dům na Malostranském náměstí). Na účastníky čekaly zajímavé přednášky českých i zahraničních odborníků a v neposlední řadě také bohaté občerstvení v předsálí.
Setkávání účastníků konference v předsálí
Jak Česká spořitelna zaváděla PostgreSQL
Jedním z přednášejících byl Aleš Zelený, který popisoval zavádění databázového systému v České spořitelně – jak se dospělo od úplných začátků až do stavu poměrně masivního nasazení (a jaká doporučení z těchto zkušeností plynou). „To, že se PostgreSQL aktivně používá v České spořitelně, je jedna z nejlepších referencí [pro tento databázový systém], které aktuálně v České republice máme,“ uvedl přednášku Pavel Stěhule z CSPUG.
Začátky
Celý proces započal před třemi lety. „Začali jsme tím, že jsme se podívali, kolik platíme komerčním dodavatelům databázových systémů. Zjistili jsme, že finanční krize nekrize, ta částka pořád roste. Takže jsme si vzali všechen open source, co jsme našli, a začali jsme vybírat. (…) Důležité je, že to dopadlo dobře, vyhrál PostgreSQL,“ vysvětluje Aleš Zelený okolnosti volby nového databázového systému.
Proces implementace probíhal za placené odborné podpory, která je ale velmi výrazně levnější, než kolik stojí licence na proprietární databáze.
Implementace začala na „nekritických“ systémech, jako je jídelníček nebo parkovací lístky. Důležité bylo, aby se databáze stala atraktivní pro vývojáře připravující aplikace. Neméně důležitou věcí bylo, mít dobře zvládnuté zálohování včetně následné obnovy dat. Odtud vyplynulo důležité doporučení: obnovu je před ostrým nasazením potřeba vyzkoušet, myšleno „opravdu vyzkoušet“.
Aleš Zelený při přednášce o PostgreSQL v České spořitelně
Vše špatné je k něčemu dobré
Ne vše šlo ale na počátku hladce. „Jak jsme byli zvyklí provozovat Oracle, tak jsme se snažili z PostgreSQL udělat Oracle a to nebyl dobrý nápad.“ To se týkalo především toho, že se místo využití dobrého výchozího nastavení search_path
pojmenovala všechna schémata a nastavení search_path
se pak muselo řešit pro každého uživatele zvlášť.
Na druhou stranu tato komplikace přivedla implementační tým k myšlence, že lze „krabicový“ software využívající PostgreSQL snadno napasovat na vlastní databázi místo té pevně nastavené – a to právě s využitím nastavení search_path
. Realizace této myšlenky u systému na pořadové lístky pro klienty byla úspěšná.
Zkušenosti přibývají
Z dalších zkušeností se například osvědčilo nepoužívat a smazat schéma public, čímž se znemožní, aby někdo bez jakékoli kontroly vytvářel v databázi své objekty. Dobrou praxí se ukázalo být také rozdělení na více schémat či databází podle potřeby, v některých případech také spouštět jednotlivé instance úplně samostatně a pro každou mít samostatnou instalaci PostgreSQL (lze využívat různé verze současně).
Samostatné instalace PostgreSQL jsou na běžných linuxových distribucích trochu problém, protože s tím balíčkový systém nepočítá. Neobejde se to tak bez tvorby vlastních balíčků.
Situací, na kterou je potřeba se dobře připravit, je zaplnění místa v úložišti, ke kterému může dojít i přes veškeré prevenční úsilí a přes náležitý monitoring. „Naučili jsme se, že na svazku, kam dáváme xlogy, máme nějaký tří-, čtyřgigabajtový 'dummy' soubor, pomocí dd udělanou výplň. A pokud někdo volá, že je akutní problém, tak můžeme smazat ten soubor, začít to řešit (…) a prostě takto získáme nějaký čas.“
Osvědčilo se zvýšit význam operace autovacuum
– aby v zájmu rychlejšího vykonání probíhala dostatečně často – a také operaci překonfigurovat, například navýšit paměť nebo snížit nastavenou „cenu“ operace.
Účastníci konference sledují přednášku
Oprávnění, aneb PostgreSQL vítězí nad Oraclem
Jak skloubit požadavek na nejmenší možná oprávnění s tím, aby se aplikace o svá privilegia nemusela starat? „Tady jsme našli v PostgreSQL velkého přítele, protože na rozdíl od Oraclu zná něco jako default privilegia. Což když zkombinujeme s tím, že využíváme schémata pro jednotlivé aplikace, můžeme 'nagrantovat' default privilegia pro lidi, kteří mají mít například read-only přístup do aplikace na nějaký troubleshooting.“ Výhodou je, že když vznikne nový objekt toho typu, pro který jsou default privilegia přidělena, automaticky se na něj tato práva uplatní.
Kritické systémy banky „jedou“ na PostgreSQL
Kam až se implementace PostgreSQL dostala? „Dnes PostgreSQL používáme pro business-kritické systémy do takové míry, že po půlhodině výpadku by se nám banka zastavila,“ odpovídá Aleš Zelený na dotaz z publika, zda už byl systém nasazen na použití v kritických aplikacích.