The English version of this interview is also available: Interview with Magnus Hagander, the president of PostgreSQL Europe.
Jste členem Core PostgreSQL Teamu a zároveň prezidentem PostgreSQL Europe. Co máte v těchto funkcích na starosti?
Prezident PostgreSQL Europe je asi nejjednodušší na vysvětlování. PostgreSQL Europe je uživatelská skupina PostgreSQL pro Evropu. Nemá přímou souvislost s vývojem PostgreSQL, jde spíše o propagaci PostgreSQL. Jsme tu od toho, abychom podporovali lokální uživatelské skupiny, například tady v České republice a v dalších zemích, třeba v Německu, Švédsku, Francii atd. Pomáháme s organizací celoevropských akcí, například PostgreSQL Conference Europe, která je pořádána každý rok na jiném místě. To je naše hlavní činnost. Jde o pětičlenný panel, kterého jsem prezidentem. Úkolem panelu je přijímat rozhodnutí, která uvádějí věci do pohybu. Snažíme se přesvědčit ostatní, aby se pak ujali té skutečné práce.
PostgreSQL Conference Europe se letos bude konat 23.–24. října v Praze.
Core Team vývojářů PostgreSQL je administrativní tým, který má na starosti PostgreSQL. Hodně lidí říká, že když je všechno v pořádku, nedělá Core Team skoro nic. A to je záměr. Je nutno připomenout, že Core Team nemá nic společného s vlastním psaním kódu. Mnoho z nás v Core Teamu se tomu věnuje, ale ne všichni. Core Team tu je od toho, aby rozhodoval o věcech, na kterých se nepodaří shodnout v rámci komunity. V takovém případě rozhoduje Core Team. To se stává poměrně zřídka. Pokud chce nějaká firma komunikovat s projektem PostgreSQL, aniž by používala veřejné kanály, kontaktuje Core Team. Protože vše ostatní v komunitě, všechna naše vývojová rozhodnutí a plánování se odehrávají ve veřejných poštovních konferencích. A spoustě společností to nevyhovuje. Možná nechtějí, aby lidé věděli, že používají PostgreSQL nebo že o tom uvažují. Takže Core Team má administrativní funkci a pravomoc oficiálně komunikovat jménem projektu.
Magnus Hagander a Miroslav Hrončok
Máme samostatné týmy a Core Team se snaží nezasahovat do technických rozhodnutí. Samozřejmě, že členové Core Teamu, kteří jsou zároveň součástí Development Teamu, se do technického rozhodování zapojí, ale ne z pozice svých funkcí v Core Teamu.
Kromě členství v Core Teamu jste také součástí Development Teamu?
Ano, to jsem. Věnuji se i programování PostgreSQL. A v běžném zaměstnání se zabývám konzultacemi k PostgreSQL, provádím instalace, školím, zajišťuji podporu atd. Což dělá většina lidí z těchto týmů – tak či onak pracujeme s PostgreSQL. To je však pochopitelně oddělené od pozice v rámci komunity.
Letos jste v Praze na konferenci P2D2 již potřetí, je to tak? Máte k této akci nějaký zvláštní vztah?
Ano, myslím, že tu jsem potřetí. Prahu mám rád. Dělám hodně přednášek, a když je příležitost, rád se účastním akcí, kde k tomu mám možnost. Také je to skvělá konference s velkou návštěvností – více než sto lidí je působivé číslo pro jednodenní lokální akci. Co se týče České republiky, je tu řada významných a dobrých vývojářů. Předpokládám, že jsou tu kvalitní prezentace – těm v češtině nerozumím, ale znám mnoho lidí, kteří přednášejí, a vím, že mají jasno v tom, o čem mluví, takže věřím, že jde o dobré a zajímavé přednášky. Organizátoři rádi zvou jednoho nebo dva zahraniční přednášející. A zjevně jsem to minule nepokazil, když mě pozvali znovu.
Magnus Hagander na minulém ročníku konference, foto Tomáš Vondra a Matěj Humpál
V roce 2009 jste mluvil o PostgreSQL 8.4. Jak daleko se od té doby PostgreSQL dostalo?
Od verze 8.4 ušlo dlouhou cestu, hodně se toho stalo. Každá nová verze PostgreSQL přináší lepší výkon než kterákoliv před ní. Myslím, že v tomto směru jsme se nikdy nezhoršili. Z těch velkých věcí, ke kterým došlo... Jednak byla začleněna práce na replikaci od Simona, který o tom dnes ráno mluvil v zahajovací přednášce. Máme streaming a synchronní replikaci s funkcemi, které má jen málo jiných databází, jestli vůbec nějaká. Máte možnost mít opravdu velmi jemně vyladěnou kontrolu nad individuálními transakcemi, ať už je považujete za natolik důležité, aby byly synchronní, nebo vám stačí běžné asynchronní. A pro verzi 9.2 k tomu přidáváme ještě další funkce.
Do PostgreSQL ve verzích 9.0 a 9.1 se také dostala řada věcí, díky kterým je systém opravdu na špici svého oboru. Nové funkce, které nemá nikdo jiný. Máme věci jako serializable snapshot isolation, což je úplně nová vlastnost, a nemám ani zdání, kde bych měl začít, kdybych chtěl vysvětloval matematiku, která za tím stojí. Ale funguje to – a velmi dobře. Díky tomu máte k dispozici opravdovou, plnou serializovatelnost při zachování našeho velmi dobře škálovatelného systému MVCC.
Jsme první databáze, která s tím přišla. Podobné je to s funkcí KNN GiST, což je indexování založené na umístění neboli indexování podle vzdálenosti. Můžete s tím provádět opravdu rychlé dotazy typu „mám něco, dej mi padesát objektů, které jsou k tomu nejblíž“. Typický a nejočividnější případ využití je samozřejmě v geografii. Dnes má každý v mobilu GPS a každý dotaz, který tam vzniká, je „jsem právě tady, ukaž mi nejbližší věci“. A my máme indexovací metodu, která je pro to optimalizovaná. Lze to však využít i pro mnoho jiných věcí, například zpracování textu. Může vám to dát slova nejbližší tomu, co uživatel hledal a podobně. Myslím, že na tom pracuje Microsoft a bude to v příští verzi jejich SQL Serveru, ale jak už jsem řekl, my jsme v čele a rozhoduje o tom databázová teorie a funkce, které nikdo jiný nemá. Na druhou stranu, základní streaming replikace je oblast, kterou jsme museli dohánět. Jiné databáze měly log shipping a proudové posílání logů už dříve. Když PostgreSQL vznikla, šlo o výzkumnou databázi, na to se zaměřovala. A dnes vidíme, že z novodobého databázového výzkumu přecházejí věci do produkční praxe. Pro mě je to velmi vzrušující.
Přijedete i příští rok?
Na to je zatím trochu brzy. Samozřejmě bych rád, pokud mě organizátoři opět pozvou, ale také to musí zapadnout do mého programu.
Mnoho projektů používá databázi MySQL a otřesný engine MyISAM. Jak byste jim poradil s migrací na PostgreSQL?
Skutečnost je taková, že je to v mnoha případech snazší, než by se mohlo zdát. Problém je, pokud chcete provozovat obě zároveň, protože každá dělá věci trochu jinak. Jsou tu dvě rozdílné věci: MySQL a MyISAM. Pokud přecházíte z MyISAM na InnoDB, najdou se věci, které nedopadnou dobře. A to jsou přesně tytéž věci, které dopadnou velmi špatně, když přecházíte na PostgreSQL. Např. nedělat SELECT COUNT(*)
na velkých tabulkách – to je problém na PostgreSQL i InnoDB, ale ne na MyISAM. Je to pravděpodobně jediná věc, kterou dělá opravdu dobře. Jakmile tyto problémy vyřešíte, přijdou na řadu problémy s vyhodnocováním dotazů.
Není tak těžké migrovat, ale když je chcete provozovat obě, nastanou potíže, protože MySQL neumí pracovat se standardní syntaxí a PostgreSQL neumí syntaxi MySQL. Když si však vyberete jednu z nich, není to tak těžké. Na některé věci narazí každý, např. MySQL cituje identifikátory pomocí obrácených apostrofů, kdežto PostgreSQL používá běžné dvojité uvozovky. To však lze vyřešit hledáním a nahrazením, což není tak těžké. A pak je tu vše kolem GROUP BY
. V MySQL typicky uděláte GROUP BY
, u kterého nespecifikujete všechny sloupce v dotazu, a teoreticky by si měla náhodně vybrat, ale podle očekávání vrátí stejný výsledek, protože MySQL má jen jeden způsob, jak pustit GROUP BY
, a to je SORT
a pak UNIQUE
. Ale když pustíte stejný kód na PostgreSQL, kde je více způsobů, jak ho provést, nebylo by to předvídatelné, takže bude dotaz zamítnut.
Jak přimět open-source projekty, například WordPress, aby nabízely možnost používat PostgreSQL?
Bude to složité, protože mnoho lidí už se snažilo mluvit s vývojáři WordPressu, ale oni o to nemají vůbec žádný zájem. Není to tak ale všude. Například poslední verze Drupalu má mnohem lepší podporu PostgreSQL než předchozí vydání. Netestoval jsem to sice osobně, ale vím také, že poslední verze systému Joomla má přinejmenším zlepšenou podporu PostgreSQL. Slyšel jsem, že to ještě není hotové, ale jde to správným směrem.
Nemůžete je nutit, to by nefungovalo. Je potřeba přesvědčit lidi z projektu, aby o to projevili zájem. A v tu chvíli bude vhodné říct „rád to udělám, pokud se mnou budete chtít pracovat“. Nedělá dobrotu, když to na ně jen tak vybalíte. Vím ze zkušenosti v komunitě PostgreSQL, jak reagujeme, když přijde někdo zvenčí a dělá haló. Jo, zkus to jinak. Myslím, že musíte zapojit komunitu a pracovat s ní. A odtud se dostanete k něčemu, co funguje.
PostgreSQL hrnek pro podtržení atmosféry konference
Pravda je taková, že pokud jde o spíše menší projekt, přidání vrstvy pro nezávislost na databázi přidá spoustu režie. Jde o to, že pokud jste začali psát stoprocentně pro MySQL, nejde jen o SQL jádro. Celý systém je navržen pro MySQL a vy zjistíte, že je mnohem snazší převést systém, který byl od počátku stavěn pro Oracle, protože PostgreSQL a Oracle si jsou sémanticky bližší. Kdežto MySQL dělá řadu věcí dost odlišně od ostatních, takže pokud kolem toho svůj systém postavíte, je potřeba se vracet zpět, což znamená spoustu práce. Ale obyčejně platí, že pokud je systém alespoň trochu komplexní, tak je to přesně to, co musíte udělat, chcete-li to provést pořádně. Polovičatý port na PostgreSQL by nakonec nikomu nepomohl. Lidé by řekli „vždyť to pořádně nefunguje“ a buď by šli zpět k MySQL, nebo by si řekli „tihle týpci neví, jak psát dobrý kód“ a nedali by PostgreSQL šanci. Nikomu by to nepomohlo.
Byl jste na letošním FOSDEMu. Stálo to z hlediska PostgreSQL za to? O čem jste mluvili?
FOSDEM je vždycky fajn. Zabýváme se tam dvěma věcmi. FOSDEM pro komunitu PostgreSQL z většiny znamená setkávání s našimi uživateli a navazování kontaktů s dalšími projekty, které využívají PostgreSQL. Také mluvíme s lidmi, kteří PostgreSQL balíčkují – pro CentOS, Debian a všechny ostatní distribuce. Pro nás jde spíše o komunikaci s těmito lidmi než o řešení interních vývojových záležitostí. Je to však místo, kam přijedou všichni naši významní evropští vývojáři, takže toho hodně probereme a vždy někam pokročíme. Hlavní smysl je však kontakt s dalšími komunitami. Míváme tam stolek, kde samozřejmě prodáváme trička a hrnky jako všichni ostatní, ale máme díky tomu také šanci mluvit s uživateli a navázat kontakt s dalšími projekty. Měli jsme také na jeden den vývojářskou místnost, jak to tam nazývají, ale tam probíhaly především prezentace zaměřené na lidi z jiných projektů.
Magnus Hagander a Miroslav Hrončok
Pár těch přednášek šlo dost do hloubky a dostali jsme k nim dobrou zpětnou vazbu. Heikki Linnakangas přednášel o linkování v PostgreSQL a několik vývojářů jádra přišlo diskutovat o zamykání. V tom je skutečná krása FOSDEMu – je tam tolik různých projektů na stejném místě ve stejnou dobu. Jde tedy hlavně o kontakt s ostatními lidmi.
Zabýváte se i jinými open-source projekty kromě PostgreSQL?
Věnuji se několika. Například pracuji na projektu Munin, což je monitorovací nástroj. Ale jde mi především o to, aby dobře fungoval s PostgreSQL. Také jsem se zabýval projektem Varnish, který nemá přímou vazbu na PostgreSQL. Jde o jeden z produktů, na který se zaměřuje moje firma. Ale poslal jsem jen několik patchů, nedělal jsem opravdový vývoj. Když jde o zásadní vývoj, jeden projekt stačí – snadno zabere všechen čas. Věnuji se vývoji PostgreSQL serveru samotného, ale také údržbě infrastruktury projektu, webu, wiki, všem serverům, gitu a tak dále. I to mi zabírá čas.
Ve své prezentaci jste mluvil o imaginárním blogu s milionem návštěv za den-
Za minutu...
...má váš blog takovou návštěvnost?
Blog sice mám, ale milion návštěv za den tam není, natožpak za minutu.
Otázky pokládal Miroslav Hrončok, dvě doplňující o migraci z MySQL položil Tomáš Crhonek, kteý je teké autorem fotografií. Z odposlechu přepsal a přeložil Robert Krátký.