Konference Prague PostgreSQL Developers' Day, zkráceně P2D2, poprvé proběhla v roce 2008, organizována jednotlivci. Na minulém, třetím, ročníku vzniklo občanské sdružení CSPUG (Czech and Slovak PostgreSQL User Group), pod jehož záštitou se konal ročník letošní. Od prvních ročníků se podle letošních organizátorů Pavla Háka a Tomáše Vondry celkem změnila skladba návštěvníků od studentů k lidem takříkajíc z „businessu“.
Kromě zajímavých českých přednášek se do programu dostaly i dvě anglické od zahraničních hostů ze Švédska a Švýcarska. Poslechnout si nejen je přišlo celkem sto deset lidí, z čehož asi dvacítka patřila k realizačnímu týmu, přednášejícím, sponzorům, což dává ve výsledku devadesát „normálních“ návštěvníků. Celý den sice začal raním workshopem o optimalizaci v půl deváté, ale organizátoři příhodně zařadili registraci zúčastněných a zahájení konference až za něj, takže pro většinu zúčastněných byla první přednáškou sonda do sloního chobotu, tedy taková upoutávka na PostgreSQL 9.1.
Pavel Stěhule: Raní workshop o optimalizaci
State of Tree
Magnus Hagander, předseda evropského PostgreSQL Boardu
V první přednášce po registraci hostů Magnus popovídal o novinkách plánovaných pro nové vydání PostgreSQL 9.1 (jehož release se plánuje na konec léta 2011). Dámy a pánové, máme se na co těšit. Malá ochutnávka:
Verze 9.1 významně rozšiřuje podporu replikací (poprvé zavedených v současné verzi 9.0), zavádí roli replication, přináší vylepšené zálohovaní pomocí stream backup. A to do té míry, že je možné běžící databázi zálohovat na jiný stroj, kde lze na takto získaných datech přímo spustit postmaster a získat tak plně funkční kopii serveru; to celé jedním příkazem bez nutnosti snímků souborového systému a vypnutí zdrojové databáze. Tleskám. Bude také možné používat synchronní transakce (potvrzení transakce čeká na slave servery).
Dále přibylo mnoho monitorovacích bodů (systémový administrátor prý rád čísla a grafy :-), anglicky hovořící Magnus si řadou vtípků zjišťoval, jestli jej vůbec někdo poslouchá) a statistiky jako počet synchronizačních operací (fsync) z WALu na disk za sekundu, počet běhů autovacuum nad tabulkami a další měřící body. Verze 9.1 bude mít také autotunning WAL bufferů (což je ale z autotune vše).
Změn doznalo i nejpoužívanější rozšíření PostgreSQL, a to PostGIS. Byl zaveden nový index pro nalezení nejbližších bodů v okolí daného bodu. Přibyla také podpora bezpečnostního systému SELinux (to zase rády různé třípísmenkové agentury), možnost vytvoření pojmenovaných snapshotů databáze (pro obnovení stavu databáze k bodu v historii), v pg_hba.conf je nově možné použít také jména hostů na místo IP adres (docela kontroverzní novinka).
Úpravy zaznamená také storage systém databáze, ve verzi 9.1 bude možné vytvářet tzv. unlogged tabulky, data se tedy vůbec nebudou ukládat do WALu, ale půjdou přímo do datových souborů. Je to nejrychlejší způsob práce, na druhou stranu při nečistém ukončení serveru nebude možné tabulku zrekonstruovat a bude prázdná (trim). Ideální pro rychlá dočasná data. 9.1 bude mít konečně izolaci transakcí SERIALIZABLE
. Bude také možné měnit výčtový typ (alter enum) a používat různé collate na sloupcích. Bude také možné používat spouště (triggers) i na pohledech (views).
Magnusovi se podařilo svou přednášku natáhnout asi o dvacet minut, nakonec nebyl jediný (většině posluchačů to ale rozhodně nevadilo). Tuto skutečnost neopomněl zmínit na svém Twitteru, kde poznamenal i fakt, že musel svou prezentaci den před konferencí celou předělat kvůli příliš aktivním vývojářům.
PostgreSQL jako platforma pro DWH
Vratislav Beneš
PostgreSQL se obvykle používá pro „klasické databáze“, tedy takové, kam se ukládají běžná pracovní data aplikací nebo informačních systémů. Přednáška Vratislava Beneše však měla za cíl ukázat, že lze tento databázový systém využít i pro datové sklady (Data Warehouse, DWH).
Pro datové sklady je charakteristické, že se do nich v pravidelném intervalu „nalije“ velké množství dat z různých zdrojů a pak se nad nimi provádějí (buď přímo nebo přes samostatnou vrstvu, tzv. datová tržiště) všelijaké komplexní dotazy. Proto musí databázové systémy pro DWH splňovat požadavky, které s tím souvisejí – například škálovatelnost, partitioning, možnost rychlého vkládání velkých objemů dat a paralelní zpracování dat uložených ve skladu.
Jak si v tomto ohledu stojí PostgreSQL? Vratislav ukázal, že poměrně dobře. Jediné, co samotnému systému chybí, je možnost paralelního zpracování dat. Ta byla v případové studii řešena použitím open-source programu GridSQL. Prezentované porovnání výsledků (z hlediska rychlosti) dosažených původním řešením založeným na MSSQL a novým řešením na PostgreSQL a GridSQL se ihned stalo předmětem pochybností ze strany některých účastníků konference – poukazovali zejména na výrazně větší operační paměť a nasazení SSD u řešení na PostgreSQL. Otázka zůstala otevřena a asi tomu tak bude do té doby, než někdo provede měření na identickém hardwaru.
Další diskutovanou záležitostí byla vhodnost využití GridSQL pro některé druhy dotazů. Zde ale přednášející odpověděl zcela logicky: nejde o řešení, které by se hodilo vždy a všude, kromě toho záleží na konfiguraci, jak se bude nakládat s daty při jejich vkládání.
Na své si přišli i příznivci neuronových sítí. Tyto sítě (realizované pomocí funkcí napsaných v jazyce C) lze využít jako nástroj pro vyhodnocování velkých objemů dat v datových skladech, implementovaných v tomto případě databázovým systémem PostgreSQL. Vratislav Beneš opět ukázal případovou studii, tentokrát zaměřenou na predikci měnových kursů, což zcela logicky vedlo některé účastníky k dotazům typu „Dokáže se to vypořádat s tím, co zítra řekne prezident Obama?“
I když asi PostgreSQL v současnosti není zajímavý pro opravdu velké hráče, zcela ve shodě s přednášejícím lze říci, že existuje řada oblastí, kde si své uplatnění velice dobře najde, například ve středních firmách, při požadavcích na vysoký výkon v kombinaci s nízkým rozpočtem nebo pro specifická řešení. Jak je totiž vidět, předpoklady k tomu splněny jsou.
Databáze s tisíci uložených procedur
Pavel Bláhovec
Pavel nejprve představil svůj softwarový produkt (Bláhovec.NET) pro pracovní a personální agentury, uvedl požadavky na něj kladené z různých stran (ověření identity žadatele, účetní data, fakturace, mzdy, automatické posílání zpráv a mnoho dalších) zejména spojené s uložením a zpracováním mnoha dat. Popovídal také o důvodech, proč si nakonec zvolil PostgreSQL jako hlavní databázi a nakonec i jako aplikační platformu. Z MySQL se mu ztrácela data, Oracle je drahý a MSSQL (které uvedl jako hlavního konkurenta PostgreSQL) byl horkým kandidátem, ale nakonec zvolil PostgreSQL pro jeho cenu, otevřený vývoj, funkcionalitu, rychlost (ano, PostgreSQL je nejrychlejší open-source databáze) a bezpečnost dat.
Větší část přednášky věnoval historickému exkursu, na kterém vysvětlil důvody pro volbu PostgreSQL nejen jako databáze, ale také jako aplikační vrstvy. Pavel totiž z klasického třívrstvého systému (klient, aplikační server, databáze) udělal v podstatě dvouvrstvý systém (klient připojený přímo do databáze), kdy aplikační a databázovou vrstvu spojil do jedné v podobě uložených procedur v PostgreSQL. Výsledné databázové schéma tak obsahuje něco pod šest set tabulek, sedm set pohledů a přes tisíc uložených procedur, které obsahují veškerou logiku. Klienti přistupují k datům výhradně přes tyto procedury, nevidí jednotlivé tabulky ani pohledy.
Jelikož PostgreSQL rozhodně není kompletní platforma, například neumí poslat email s tiskovou sestavou (ovšem i to by šlo, pomocí modulu, jehož tvorbu později popsal Pavel Stěhule) či se připojit na zařízení odesílající SMS, bylo potřeba vyvinout ještě pomocnou aplikaci (v Javě), která se o to postará. K datům se ale dostane opět pouze přes uložené procedury. Rozhodně se jedná o zajímavé pojetí práce s databází, kdy se kromě úložiště použije i jako platforma pro aplikační server.
Pavel nám v zásadě předvedl, kolik strávil času tím, že přebudoval databázi na aplikační vrstvu, aniž by uspokojivě odpověděl na otázku, k čemu je něco takového dobré.
Po Pavlově přednášce následoval oběd, nevšimli jsme si, že by po něm lidí výrazně ubylo, takže není pravděpodobné, že by vysoká účast byla spojena pouze s možností najíst se.
Autory článku jsou Tomáš Crhonek (State of Tree a Databáze s tisíci uložených procedur), Lukáš Jelínek (PostgreSQL jako platforma pro DWH) a Miroslav Hrončok (úvodní text a poznámky psané červeným písmem). Autory fotografií jsou Tomáš Vondra a Matěj Humpál (více fotografií). LinuxEXPRES je mediálním partnerem akce. Na pokračování se můžete těšit v průběhu týdne.