Blog

 

 Tagcloud

 Kalendář akcí

 Twitter

 
26. října
2012

PgConf.eu 2012

Autor: Martin Strejc | upraveno: 27. 10. 2012 | štítky: PostgreSQL, PgConf.eu 2012, Database, SQL

PgConf.eu 2012 se letos konala v Praze a co jsme se dozvěděli o PostgreSQL v současné verzi 9.2?

PGConf.EU je nejvýznamější konference o open-sourcové relační databázi PostgreSQL v Evropě. Na letošní konferenci, kerá se konala v Praze v hotelu Corinthia, se sjelo téměř 300 databázových administrátorů, programátorů a členů komunity. Mezi nimi nemohli chybět zástupci ETN - PMe, MSj a AJa.

Čtyřdenní konference se skládala nejen z odborných prezentací, ale také z dobrého jídla a společenských setkaní (například výlet na parníku po Vltavě). První den byl věnován školením, v dalších třech dnech a třech přednáškových sálech jsme si mohli vyslechnout více než 40 prezentací.

Konferenci zahájil jeden z otců SQL Joe Celko krátkým výletem do historie ukládání dat a úvahou na téma budoucnosti databázových technologií. Poté se účastníci rozdělili do třech sálů a tří různých přednáškových stop.

My (tj. PMe a AJa) jsme se zaměřili především na prezentace věnované správě databází, zatímco MSj navštívil ty více programátorsky orientované.

Programátorské přednášky

Common Table Expressions / Debugging Queries

Bruce Momjian a Cinnani Ciolli ve dvou různých přednáškách ukázali výhody extrahování složitých SQL dotazů do query uvozených klauzulí WITH. Zejména debugování některých složených dotazů je možné např. díky insertu do dočasné tabulky právě v bloky “WITH”, zejména např. u rekurzivních dotazů.

PL/pgSQL Internals

Pavel Stěhule jako český přispěvatel a vývojář PostgreSQL upozornil na rozdíl mezi např. jazykem Java a interním pgSQL, kde všechny pseudopříkazy se nejprve přeloží do jazyka SQL, proto bychom měli používat pgSQL funkce co nejjednodušší a nejefektivnější, event. debugovat, co se vlastně vyrobí za výsledek. Hlavní výhodou pgSQL je ale každopádně to, že se tato funkce vykoná přímo na serveru nad zdrojovými daty. Pavel Stěhule též vysvětlil, že PostgreSQL je vlastně platforma, a je tedy možné v rámci serveru snadno zaregistrovat handler jakéhokoliv dalšího jazyka, ve kterém se rozhodneme psát serverové funkce dostupné přímo z SQL.

Understanding EXPLAIN's Output

Guillaume Lelarge velmi prakticky ukázal hromadu varinat toho, co může EXPLAIN a EXPLAIN ANALYZE vrátit a jakým způsobem rozumnět výsledkům. V knize PostgreSQL 9.0 High Performance (s laskavým příspěním Euro bankovek o DPr :), nyní v knihovně BOSS) můžeme pak nalézt příkazy na ovlivňování plánovače PostgreSQL, pokud náhodou nedělá, co bychom chtěli.

Indexy jsou grunt

Pavel Stěhule se opět blísknul a vysvětlil rozdíl, kdy indexy pomáhají, kdy nemají vliv a kdy jsou naopak kontraproduktivní, neboť zabírají místo, snižují rychlost a nepřináší žádný užitek pro filtrování dat. Některé další přednášky tématicky navazovaly a ukazovaly další možnosti využití indexů. Pavel Stěhule ještě zmínil speciální typy indexů, např. nad regulárními výrazy nebo fulltextem či selectivní indexy s podmínkou WHERE.

Load dat do PostgreSQL

Jan Holčapek ukázal nástroj pgbulkload, kterým dostanete do PostgreSQL např. ze souboru CSV celkem slušné množství dat. Pokud jsou to však desítky či stovky gigabyte, začínáte již mít problém.

Universal data Access with SQL/MED

Z přednášky pana David Fetter je asi nejdůležitější závěr, že lze použít externí zdroj, opět téměř libovolný, jako tabulku, nad kterou budeme běžným způsobem provádět SQL dotazy. Toto je poměrně zásadní při vnímání integrace dat z jiných systému do PostgreSQL a systematicky přístup k nim pomocí SQL.

PostGIS / PostBIS

Vincent Picavet a Michal Schneider ve dvou různých přednáškách představili speciální datové typy a různou práci s nimi. Spíše se jedná o demonstraci síly Open-source databáze, která umí zachytit požadavky moderních trendů a nároků uživatelů a potenciálního trhu, na který často ani komerční produkty již nejsou schopny zacílit.

JSON and PLV8

Will Leinweber předvedl další atypický datový typ a práci s ním a spojení s JavaScriptem. Osobně se JS nijak zvlášť nevěnuji, ale jako ukázka to bylo zajímavé.

Practical Tips for Better PostgreSQL Applications

Mark Balmer řekl a ukázal hromadu zajímavostí, nejdůležitější je však asi vždy mít na paměti bezpečnost aplikace a vědět, že každý SQL dotaz či každá aplikace může obsahovat chyby a pokud možno se s tím umět vypořádat. Jedna z věcí, kterou mimochodem zmínil, byla opomíjená bezpečnost vstupů, tedy SQL Injection, ale také QR Injection nebo Bar Code Injection, tedy útok z míst, kde s tím často nikdo nepočítá.

Administrátorské přednášky

Limiting PostgreSQL Resources Consumption

Hans-Jürgen Schönig zmínil velmi zajímavé téma, že i PostgreSQL může mít někdy problém a proto je dobré jej někdy omezit, např. užitím Cgroups, které jsou v jádře Linuxu podporovány od verze 2.6.24 a díky čemuž je možné zachovat např. to, že i pokud databáze je přetížena špatným selectem či insertem, stále můžeme zachovat funkční proces replikování či zálohování, event. ponechat další systémové prostředky v rámci OS privilegovanému uživateli, aby mohl provést ještě nějaký zásah a vše odborně napravit.

Provoz PostgreSQL na AWS

Tomáš Vondra ze společnosti GoodData nám předal své zkušenosti z provozu PostgreSQL na cloudu Amazonu. Provoz na cloudu je sice flexibilní, ale přináší nepredikovatelné chování a ne moc dobrý výkon. Časté jsou problémy s rychlostí operační paměti, ESB disků a sítě obecně. Výkonové testy, které autor prezentoval, ukazují velký rozptyl výkonových charakteristik, daný z velké části sdílením fyzických prostředků v rámci cloudu. Za stabilní, ale nižší, výkon je potřeba si připlatit .

Počáteční investice do projektu na cloudu je nízká, postupem času provozní náklady přerůstají rozumnou mez. Není se čemu divit, že GoodData migrují na vlastní hardware.

Inside PostgreSQL Shared Memory

Bruce Momjian, dlouholetý vývojář PostgreSQL, nám ukázal, jak databáze pracuje s daty na disku a ve sdílené paměti. Postgres, oproti MySQL, používá procesy, které řídí pomocí standardního System V IPC. Procesy nemají, narozdíl od threadů, sdílený adresní prostor, vyměnují si data přes sdílenou pamět. Interní formát Postgresu pro ukladání jak na disk, tak do paměti, je stejný. 8K stránky jsou mapovány přímo do struktur jazyka C, bez nutnosti konverze. Díky tomu je načítání dat mimořádně rychlé a efektivní. Na druhou stranu je ale binární formát závislý na architektuře procesoru. Velmi zajímavý byl také popis implementace rychlých spinlocků napsaný přímo v assembleru. Ač bylo téma označené třemi slony (tedy pro pokročilé), Bruce nám vše stručně a srozumitelně vysvětlil, takže jsme odcházeli s pocitem, že je vše jednoduché a jasné.

PostgreSQL Backup Strategies

Magnus Hagander připravil prezentaci na téma Postgres a zálohování. Ze začátku zdůraznil nutnost zálohy nejen provádět, ale i pravidelně testovat. Potom už se věnoval nástrojům a technikám pro provádění logických a fyzických záloh.

Kromě klasického pg_dumpu pro vytváření SQL dumpů databází (včetně pár tipů a triků navrch) nám ukázal i neblokující zálohu velkých databází umožující PITR (Point In Time Recovery). To je možné docílit nástrojem pg_basebackup, podobný Xtrabackupu pro MySQL, který kombinuje binární zálohu databáze s přehráváním transakčních logů.

Další...

Dále jsme viděli řadu prezentací o implementaci clusterování a shardingu, vysoké dostupnosti a loadbalancování. Také správa velmi velkých databází (v řádu stovek TB) byla zajimavé téma. Doufáme, že se nám nabyté znalosti brzy podaří přetvořit na zkušenosti v rámci nějakého našeho projektu.

Společenské události

Středeční pokec

Ve středu se konala večerní popíječka v hotelu, kde jsem dobře popovídal zejména s oborovými kolegy z Rakouska a z Číny

Čtvrteční parník večerní Prahou

Na čtvrtek pak byla večer též od sponozů noční plavba parníkem po Praze s nějakým tím občerstvením a konverzací, kde jsem poznal pár autorů PostgreSQL, nějaké kolegy z Německa, Autstrálie a Čech, a též se měl možnost osobně seznámi s Joe Celko, o němž se již zmiňovala Anička.

Foyer hotelu

Při běné konverzaci ve foyer hotelu, kde se konaly pauzy na kafe, jsem chvíli diskutoval s Pavlem Stěhule, který mimochodem říkal dost důležitou informaci, že u dat do 500GB je v podstatě PostgreSQL úplně normální databází a až od větších živých dat je potřeba provádět extrémě náročné optimalizace.

Závěrem

Myslím, že to bylo moc fajn a jsem rád, že jsme na konferenci PgConf.eu 2012 byli.

Anna Janáčková

Petr Medonos

Martin Strejc