Tomáš Vondra pracuje jako vývojář ve firmě GoodData, databázi PostgreSQL se ale věnuje i ve volném čase. Píše blog, kde například srovnává výkon PostgreSQL na různém hardwaru. Je autorem celé řady rozšíření PostgreSQL. Spoluorganizuje lokální konferenci Prague PostgreSQL Developers' Day, letos je také lokálním spoluorganizátorem mezinárodní konference pgconf.eu.
Konference pgconf.eu, nebo dlouze PostgreSQL Conference Europe 2012 proběhne 23. až 26. října v Praze v hotelu Corinthia. LinuxEXPRES je mediálním partnerem konference. Všechny rozhovory u příležitosti konání pgconf.eu 2012:
- Jean-Paul Argudo: Poptávka po PostgreSQL ve Francii každým rokem roste
- Peter van Hardenberg: Spravujeme stovky tisíc databází, data měříme na petabajty a děláme to v pěti lidech
- Pavel Stěhule: Mezi uživateli a vývojáři PostgreSQL nejsou žádné bariéry
- Vincent Picavet: Děláme svobodný software a věříme, že je to správná volba
- Tomáš Vondra: Nemám rád přístup „nemůžeme vám ukázat kód, je to naše tajemství“
- Simon Riggs: Lidi překvapuje, že je PostgreSQL zadarmo a zároveň zatraceně kvalitní
- Peter Eisentraut: Open-source projekty fungují nejlépe, když využívají standardy
- Dave Page, ředitel PostgreSQL Europe, nejen o nadcházející konferenci pgconf.eu
Co vás přilákalo k PostgreSQL?
Bylo to v roce 2003 nebo 2004, když jsem začal pracovat pro firmu Pears Health Cyber. Spravovali jsme několik webů postavených na LAMP a nebyli jsme moc spokojení s výkonem. Později se sice ukázalo, že hlavní problém nebyl ve skutečnosti na úrovni databáze, ale našem špatném programátorském stylu, který vedl až ke stovkám dotazů kvůli každé stránce. Každopádně jsme se rozhodli tu původní aplikaci přepsat a možná také změnit databázi. Jedna možnost byly komerční databáze, ale když jsme trochu otestovali PostgreSQL, která tou dobou tuším zrovna dosáhla verze 8.0, tak jsme se rozhodli jít touto cestou. Nebyl to úplně bezbolestný proces, nevyhnuli jsme se problémům a občas jsme šlápli vedle (například vypnutím vacuumu, protože to ovlivňovalo naše dotazy), ale nakonec jsme byli velmi spokojení – měli jsme plně ACID databázi s velmi vstřícnou a nápomocnou komunitou a přepsaná aplikace byla výrazně rychlejší.
Jaké dvě funkce PostgreSQL stojí opravdu za to?
Těžká otázka. Kdybych měl jmenovat dvě čistě technické vlastnosti, mohl bych asi vybrat bezvadné sexy věci jako je streaming replikace, serializable snapshot isolation a tak dále, ale rozhodl jsem se zdůraznit rozšiřitelnost. Je opravdu neuvěřitelné, jak moc toho lze přizpůsobit nebo snadno doplnit – přetypování, operátory a s tím spojené věci, fulltextová konfigurace, vlastní rozšíření (extensions) a pokud jste ochotní zkusit trochu C, tak procedurální jazyky a s pomocí háčků a trochou odvahy dokonce vlastní věci pracující přímo s interními strukturami databáze. To považuji za výtečnou vlastnost.
Kdybych měl vybrat netechnické vlastnosti, zmínil bych určitě komunitu a její otevřenost a transparentnost. Je trochu obtížné definovat, co je to komunita, ale ta široká skupina lidí, kteří se podílejí na vývoji, pomáhají uživatelům v mailových konferencích a tak dále, to je úžasná věc. A nezapomínejme na firmy, které v tomto ekosystému vyrostly a díky kterým je to všechno možné. Poskytují služby a podporu, podporují vývoj. A to vše je postavené na zcela průhledném systému, ve kterém se rozhoduje meritokraticky.
Které funkce je potřeba v brzké budoucnosti implementovat?
To záleží na tom, jak PostgreSQL používáte, protože pro mnoho uživatelů už nic nechybí. Mám-li jmenovat nějaké funkce, které by se v PostgreSQL líbily mně, protože by z nich měla přínos naše firma, řekl bych sloupcové ukládání, MERGE, rychlejší loady velkého objemu dat a paralelní dotazy. Ačkoliv to jsou čtyři vlastnosti a ne jen dvě.
Jaké má podle vás PostgreSQL chyby?
Nevím o chybách ve smyslu vyloženě nefunkčních nebo rozbitých věcí – ty bývají velmi rychle opravovány. Nicméně, čas od času natrefíme na implementační detail, který nám dost ztíží život – naposledy šlo například o to, že celé plánování běží v rámci jediného paměťového kontextu a paměť se neuvolní, dokud není plánování dokončeno. Při komplexních dotazech (velký počet tabulek) a určitém nastavení plánovače to bohužel vyústí v problémy s alokací velkých objemů paměti (nehledě na to, že v takových případech zabere plánování hodně času). Ale obyčejně je možné nalézt rozumné náhradní řešení.
Kdybych měl jmenovat jednu vlastnost, která neposkytuje funkčnost, jakou bych chtěl, byl by to asi partitioning. Nechápejte mě špatně – líbí se mi myšlenka dědičnosti tabulek a respektuji ty, kdo partitioning implementovali, protože to určitě bylo hodně práce, ale mám zkušenosti s partitioningem v Oracle a myslím, že řada funkcí, které jsou k dispozici tam, by se velmi hodila (např. cizí klíče pro rozdělené tabulky, globální indexy, efektivní spojování tabulek rozdělených podle stejných pravidel (tzv. equi-partitioned) a tak dále.
Slon je maskotem PostgreSQL, CC BY-SA Greg George
Můžete srovnat PostgreSQL a jiné databáze, se kterými máte zkušenosti?
Před dlouhou dobou jsem používal MySQL, pak většinou PostgreSQL a Oracle. Narazil jsem i na další databáze, ale nepoužíval jsem je natolik abych si je dovolil srovnávat.
Porovnejme nejprve MySQL a PostgreSQL – zkusím vynechat to běžné shazování. Když jsem kdysi začínal používat PostgreSQL, MySQL chyběly některé atraktivní vlastnosti jako ACID, MVCC, full outer joiny apod. Na druhou stranu se u MySQL jako výhody oproti PostgreSQL uváděly snadná instalace/používání a výkon s jednoduchými zátěžemi. Obě databáze se v těchto oblastech hodně zlepšily, ale jsem přesvědčený, že PostgreSQL je pořád lepší volba. Zejména kvůli spolehlivosti, výkonu s netriviálními zátěžemi a dnes, když byla MySQL spolknuta Oraclem, také naprosté otevřenosti.
Srovnávání s Oracle je trochu obtížnější – Oracle má širší sadu funkcí a některé z nich bych měl opravdu rád i v PostgreSQL (už jsem zmínil partitioning). Ale jinak se s PostgreSQL pracuje hodně podobně jako s Oracle – dialekty SQL jsou podobné, PL/pgSQL je velmi podobné PL/SQL a tak dále. Pár let jsem s Oracle pracoval a přechod byl docela snadný.
Jaké hlavní výhody vidíte v tom, že je PostgreSQL svobodný software?
Cena je výhoda, o tom není pochyb. Pro mnoho firem je to pravděpodobně hlavní důvod, proč zpočátku zvolit PostgreSQL. Ale já myslím, že hlavním přínosem je transparentnost celého vývojového procesu a možnost opravdu vidět a hlavně ovlivnit, co se implementuje a jak. Ne každý si bude bude PostgreSQL přizpůsobovat nebo implementovat komplexní nové funkce, i když to není tak obtížné. Především vám to ale dává ty čtyři svobody, o kterých mluvil např. Simon Phipps na pgconf.eu 2010 ve Stuttgartu – svobodu používat, studovat, upravovat a distribuovat daný software.
PostgreSQL začala na Unixu, nyní je převážně používána s Linuxem. Je to podle vás výhoda?
Líbí se mi ten unixový přístup, tj. „připravujme malé, pružné nástroje, ne obří, monolitické záležitosti.“ Linux je navíc dominantní operační systém na serverovém trhu, alespoň co se x86 platformy týká, a dostává se mu tak spousta pozornosti a je stále vylepšován (například v oblasti souborových systémů, škálovatelnosti atd.), což zároveň zlepšuje podmínky pro uživatele PostgreSQL. Takže to vidím jako výhodu, ale jsem také pro podporu ostatních operačních systémů a platforem, kterých PostgreSQL podporuje nemálo.
Jaký je váš pohled na trend, který se zaměřuje na úpravy jádra kvůli desktopu, má to vliv na vaši práci?
Nesleduji vývoj jádra tak podrobně, takže nevím o případech, ve kterých by zlepšování uživatelského komfortu pro desktop negativně ovlivnilo serverové vlastnosti. Vývojáři prostě pracují na věcech, které jsou důležité právě pro ně, takže to nejde brát tak, že bychom jim řekli, ať na desktopových problémech přestanou pracovat, protože je nepravděpodobné, že by místo toho pracovali na věcech pro servery. Kromě toho si myslím, že velké firmy jako Red Hat a Oracle, které se vývoji jádra hodně věnují, by se silně bránily čemukoliv, co by mohlo poškodit serverový trh (o který jim jde především).
Hlavním problémem je podle mého skromného názoru to, že se jádro dostatečně a konzistentně netestuje s ohledem na výkonnostní regrese. Kdybychom tyto regrese mohli opravit nebo se jim vyhnout, výhody by nejspíš převážily dopad funkcí navržených pro desktop. Mel Gorman o této oblasti nedávno publikoval velmi zajímavé výsledky, přičemž upozornil na některé dost nepříjemné problémy, ale dostalo se mu zatím minimální odezvy. Smutné je, že takové testy zatím neděláme ani my.
Používáte na desktopu Linux?
Ano, používám Linux (Gentoo) jako jediný operační systém na svých domácích počítačích od roku 2003 nebo 2004, teď si nejsem jistý. Důvod je velmi prostý – plně vyhovuje mým potřebám. Používal jsem Linux už dříve (počínaje systémem Red Hat 5.1 Apollo, se kterým jsem zprvu dost zápasil, a pak Fedoru), ale nějaký čas mi trvalo, než jsem si na stroji s dualbootem uvědomil že už vlastně bootuji jenom do Linuxu.
Píšete blog, jste autorem řady rozšíření a ještě jste součástí týmu pgconf.eu. Jak to všechno zvládáte?
Chvíli to zabralo, ale dělal jsem to dlouhou dobu, takže to nebyl zas takový výkon. A poslední dobou jsem toho do blogu moc nenapsal, ani jsem se nevěnoval rozšířením – právě kvůli nedostatku času.
Proč vás tak zajímají rozšíření?
Neřekl bych, že mě zajímají rozšíření sama o sobě (i když je to výborná vlastnost a každému doporučuji, aby se je naučil používat), ale je to pro PostgreSQL skvělý balíčkovací a distribuční systém. Něco podobného bylo možné dělat i s tzv. „contrib“ balíčky, ale dnes je to mnohem snazší a můžete s tím dělat mnohem více – definovat závislosti apod. Doufám, že to lidé začnou používat také pro svůj aplikační kód, který vyvíjejí pro sebe, protože je díky tomu jednodušší správa. Bohužel se o rozšířeních není letos na pgconf.eu žádná přednáška.
Některá z nich používají systém „hooků“ (možnosti doplnit na určitá místa volání uživatelského kódu), co si o něm myslíte?
Neřekl bych že systém háčků znám, protože pokud vím, tak pro háčky neexistuje žádná oficiální dokumentace - je to považováno tak trochu za interní implementační detaily. Musel jsem se tedy o nich naučit čtením zdrojových kódů, komentářů a také čtením jiných rozšíření, která je již používají. Nejsem si jistý, jestli je to tak dobře, nebo špatně, protože když háčky používáte, pracujete s dost nízkoúrovňovým API, takže byste měli opravdu rozumět tomu, jak ten kód funguje. Nedostatek dokumentace mi nevadí, i když bych byl rád, kdyby existoval nějaký základní seznam háčků s krátkými popisy.
Háčky mám každopádně rád, protože nabízejí další způsob, jak rozšířit a přizpůsobit výchozí chování. Myslím tedy, že je dobře, když je máme, ačkoliv se bez nich většina vývojářů asi obejde.
Napsal jste několik výtečných blogových zápisků o výkonnosti, jaký druh vybavení jste používal?
Díky. Pracoval jsem na tom z většiny sám, protože jsem byl zvědavý jak to vlastně je. Když vám někdo něco tvrdí, měli byste si to ověřit. Zvláště pokud se to chování mohlo změnit od doby, kdy to před několika lety testovali. A je to také skvělý způsob, jak se naučit, jak věci fungují.
Používal jsem svoji domácí pracovní stanici s celkem obstojnou konfigurací. Navíc to byla dobrá výmluva, proč si koupit různé prima věci jako SSD apod. Teď mám ale samozřejmě přístup k mnohem větším strojům (o mnoho více jader, spousta RAM, lepší disky a dokonce FusionIO), takže teď dávám zabrat těm a výsledky určitě vydám i na svém blogu.
Také jste naprogramoval nástroj pgmonitor. Co si myslíte o nedostatku monitorovacích nástrojů pro PostgreSQL?
Řekl bych, že pgmonitor je v podstatě mrtvý. Pořád si myslím, že by bylo opravdu fajn mít nástroj pro sběr a analýzu statistik, ale vypadá to, že pgmonitor se k tomu moc nehodil. Nepodařilo se mi to samotnému pořádně dokončit a chyběla mi tenkrát zpětná vazba. Kromě toho si myslím, že zvolené technologie nebyly vhodné a dnes bych určitě použil jiné.
To však neznamená, že nebudou jiné nástroje – vím o pgwatch (který je jednoduchý a neumí všechno to, co jsem plánoval pro pgmonitor, ale i tak je moc fajn) a statistiky můžete také sbírat pomocí systémů munin, nagios atd.
Zabýváte se PostgreSQL i v práci, nebo je to jen váš koníček?
Ano, pracuji na věcech, které se týkají PostgreSQL, a byl to jeden z důvodů, proč jsem před několika měsíci změnil zaměstnání. Nedělám s tím pořád, ale celá platforma GoodData zásadním způsobem využívá PostgreSQL, takže musím občas analyzovat, proč něco selhalo nebo běželo pomaleji, než se čekalo, řeším různé problémy, ladím konfiguraci apod. Čas od času dokonce píšu patche – některé jsou jen pro naše interní použití, protože upravují chování způsobem, který by byl jiným uživatelům stěží k užitku, ale když je to možné, posíláme je upstreamu (např. nedávný patch, který výrazně vylepšuje výkon při odstraňování velkého počtu tabulek v transakci nebo několik menších patchů do pgbenche).
Zpočátku jsem pracoval s PostgreSQL pravidelně, ale pak jsem změnil práci a nová firma používala téměř výhradně komerční databáze, takže to byl spíš koníček. Ale s postupem času už mě začal nudit přístup „nemůžeme vám ten kód ukázat, protože je to naše tajemství“. Je to skutečně bezvadné, když se můžete učit čtením zdrojových kódů, debugováním, profilováním atd. To vám proprietární databáze jednoduše nedá.
Plánujete účast na pgconf.eu 2012?
Jistě, jsem jedním z organizátorů, takže tam určitě budu. Ale byl jsem na všech pgconf.eu konferencích kromě té úplně první a vůbec toho nelituji. Budu mít dvě přednášky v češtině – jednu o migraci z MySQL na PostgreSQL a druhou o PostgreSQL na AWS, a také první den školení o tom jak číst exekuční plány dotazů.
Z přednášek, které bych si nechtěl nechat ujít, uvedu dvě o vysoké dostupnosti: Boosting performance and reliablity by using pgpool - II, kterou přednese Tatsuo Ishii, a Implementing High Availability, kterou bude mít Dimitri Fontaine. Za zmínku stojí i přednáška o AWS (PostgreSQL on AWS, Christophe Pettus).
Jste organizátorem lokální akce zaměřené na PostgreSQL – P2D2. Jak se liší od pgconf.eu?
Je to menší akce – nejde jen o počet návštěvníků (zhruba 100–120), ale trvá jen den a má jen jedno pásmo přednášek (ve srovnání se třemi dny a třemi pásmy na pgconf.eu). Na P2D2 máme také hodně věcí zadarmo, protože konferenční místnosti a AV techniku nám poskytuje Matematicko-fyzikální fakulta Univerzity Karlovy.
Tomáš Vondra představuje Marca Balmera na P2D2 2011, foto Matěj Humpál
Pomineme-li tyto rozdíly, je účel více méně stejný – zpřístupnit zájemcům zajímavé přednášky o PostgreSQL. Z pohledu návštěvníka bych řekl, že návštěva P2D2 je podobná jako návštěva jednoho dne na pgconf.eu. Z hlediska organizace je u pgconf.eu potřeba se postarat o mnohem více věcí – hotel, AV, rozvrh atd. A je to asi trochu formálnější, protože se v tom točí více peněz.
Museli jste o pořadatelství pgconf.eu soutěžit s dalšími městy? Proč byla nakonec vybrána Praha?
To je asi otázka pro někoho jiného, protože my jsme s jinými městy nikdy přímo nesoutěžili – nabídli jsme Prahu jako možnost několik měsíců před pgconf.eu 2011, naši nabídku jsme zopakovali v Amsterdamu a po několika předběžných ověřeních hotelů atd. byla Praha vybrána. Vím, že byly i jiné možnosti, ale rozhodování jsem se neúčastnil.
Proč byla Praha vybrána? Nevím o žádných fixních požadavcích, ale myslím, že je proto několik důvodů. Veřejně jsme oznámili náš zájem konferenci hostit a pomoci ji zorganizovat. To je velmi důležité, protože by bylo dost těžké zorganizovat konferenci v cizím městě bez místní podpory. Zadruhé, mnoho lidí již mělo Prahu na svém seznamu a chtěli se sem podívat. A zatřetí, předpokládali jsme, že by Praha mohla být o něco levnější než Amsterdam.
Jak jste se stal spoluorganizátorem pgconf.eu?
Byl jsem jedním z těch, kdo navrhli Prahu jako místo pro pořádání letošní pgconf.eu, a jsem také zástupce CSPUG (Czech and Slovak PostgreSQL Users Group), takže myslím, že bylo celkem logické mě přizvat jako organizátora. Neřekl bych, že je to náročné, většinu úkolů navíc vyřizují jiní, ale rozhodně to zabere hodně času. Nevím, jak to bude příští rok – určitě nebudu místní kontakt, protože se konference přesune do jiného města.
Otázky sestavili členi organizačního týmu konference pgconf.eu a redakce LinuxEXPRESu. Rozhovor přeložil Robert Krátký a Tomáš Vondra.