Autorem článku je Lukáš Jelínek, část Lightning talks napsal Miroslav Hrončok. Není-li uvedeno jinak, je autorem fotografií Tomáš Vondra, jehož fotografie z akce jsou dostupné pod licencí CC BY-SA. Více jich najdete v galeriích z pondělí a úterý, středy, čtvrtku i pátku. Nezpomeňte si přečíst reportáž ze středy.
How fast is PostgreSQL?
Cédric Villemain
Nejprve nás Cédric Villemain ujistil, že databázový systém PostgreSQL je opravdu rychlý. A že verze 9.2.1 je ještě rychlejší. Pak už následovala ukázka toho, jak takovou rychlost měřit. Kdo čekal srovnávání rychlosti s jinými databázemi, mohl být zklamán, ale i tak byla přednáška velmi zajímavá – hlavně pro toho, kdo potřebuje měřit rychlost svého systému a odhadovat, zda současná konfigurace zvládne i budoucí nároky.
Rychlost PostgreSQL lze měřit různými nástroji, počínaje například „základním“ pgbench
, který je součástí instalace. Cédric však doporučuje především nástroj Tsung, který umožňuje testovat v prostředí masivní zátěže.
Tsung je napsán v jazyce Erlang, jehož hlavní doménou jsou paralelizovatelné, škálovatelné a vysoce výkonné aplikace, včetně distribuovaného prostředí. Pro testy je ale vždy potřeba nejdříve připravit konfiguraci, s kterou vám pomůže nástroj pgFouine. Ten je nápomocný, protože slouží k analyzování logů PostgreSQL a umožňuje z nich získávat hodnotné informace.
Připravený konfigurační soubor se použije k provedení testu v nástroji Tsung. Na závěr se perlovým skriptem tsung_stats
, který je součástí instalace Tsungu, vygeneruje report s výsledky testu.
Implementing high availability
Dimitri Fontaine
Vysoká dostupnost je termín, se kterým se v poslední době setkáváme velmi často. Dimitri Fontaine se ve své přednášce věnoval tomu, jak se vysoká dostupnost řeší v souvislosti s PostgreSQL. V první řadě zdůraznil, že vysoká dostupnost může mít řadu podob – že je například třeba rozlišovat dostupnost služby a dostupnost dat, a že dostupnost a odolnost (durability) jsou ortogonální parametry, čili zajištění jednoho nemusí vůbec znamenat přítomnost druhého.
Při zajišťování vysoké dostupnosti je třeba uvažovat všechny úrovně – tedy počínaje fyzickým úložištěm přes databáze, servery a komunikační sítě. Konkrétní realizace pak může mít řadu podob, podle toho, jaké požadavky je třeba splnit, které parametry spíše obětovat a jaké náklady jsou akceptovatelné.
Takovou realizací může být třeba sdílený disk, replikace dat na úrovni souborového systému, záložní server s využitím PITR, replikace typu master–slave nebo multimaster replikace (ať již asynchronní, nebo synchronní).
Každé řešení má své výhody a nevýhody. Tak například všechna řešení mimo multimaster znamenají, že selháním jediného serveru vypadne možnost provádět v datech změny. Naopak třeba synchronní multimaster replikace má problémy s rychlostí. Různá řešení mají také různou úroveň odolnosti.
Practical tips for better PostgreSQL applications
Marc Balmer
Mít kvalitní databázový systém je sice základ, ale když se tento systém špatně využívá, přicházejí jeho výhody vniveč. To se netýká jen nedodržování obecných zásad pro psaní databázových aplikací, ale také ignorování těch věcí, které jsou pro určitý databázový systém specifické (jdou nad obecně podporovaný standard).
Marc Balmer se v tomto ohledu zaměřil na některá specifika PostgreSQL, která umožňují vytvářet efektivnější/výkonnější a také bezpečnější aplikace. První část přednášky musela být důvěrně známa těm, kdo se účastnili P2D2 v roce 2011 – tehdy totiž Marc ukazoval možnosti asynchronního posílání zpráv, včetně případové studie ze zoologické zahrady v Basileji. Nyní to bylo sice jen v teoretické rovině, nicméně každý měl možnost dozvědět se o této neobvyklé funkci.
Ve druhé části přednášky se Marc zaměřil na bezpečnost, konkrétně na ochranu proti SQL injection. Tato část měla na rozdíl od té první obecný záběr, tedy vztahující se na širší škálu databázových systémů. Kromě klasického, dobře známého ošetřování vstupních řetězců je dobrým způsobem ochrany také využívání předpřipravených dotazů, které navíc někdy přinášejí i vyšší rychlost, protože se plánují jen jednou při přípravě, později při použití už ne.
Důležitým doporučením je chránit vstupní data ve všech případech, tedy i tam, kde nic špatného „nemůže přijít“. Velmi častou cestou příchodu nebezpečných dat jsou například QR kódy, které lze snadno podvrhnout.
Pacemaker and PostgreSQL
Jehan-Guillaume de Rorthais
Pacemaker patří k řešením vysoké dostupnosti určeným pro PostgreSQL. O tom, jak tento systém funguje, co ke své funkci potřebuje a jaká jsou jeho úskalí, hovořil Jehan-Guillaume de Rorthais.
Pacemaker se stará o fungování uzlů v clusteru. Pro svoji funkci využívá komunikační vrstvu Corosync – ta zároveň monitoruje běh Pacemakeru na všech uzlech (lze použít i starší technologii Heartbeat).
S pomocí Pacemakeru lze přidávat uzly do clusteru nebo je odebírat. Důležitou vlastností je, že podporuje funkci STONITH (důsledné odpojení uzlu, který selhal – to proto, aby následně nenaskočil v nekonzistentním stavu) a také mechanismu quorum. Nejen při používání systému Pacemaker je důležité dodržovat náležitou posloupnost úkonů při vracení uzlů, které selhaly, zpět do provozu.
Lightning talks
Poslední částí čtvrtečního programu byly lightning talks. Pokud nevíte, o co jde, zde je krátké vysvětlení: Účastníci konference po nějakou dobu na nějaké místo shromažďují své náměty na krátké pětiminutové přednášky, které chtějí sami přednést. Z těchto námětů jsou pak vybrány (například náhodně) ty, které budou v době lightning talks předvedeny. Přednášející nemá možnost svých pět minut přetáhnout a za hodinu se jich tak dá stihnout deset až dvanáct.
Lightning talky moderoval Harald Armin Massa, který měl také hned první minipřednášku právě o tom, jak dělat dobré lightning talky. Hned po něm nastoupil student, který v rámci Google Summer of Code implementoval TABLESAMPLE dotaz, který zjednodušuje práci, pokud potřebujeme náhodný vzorek z nějaké obří tabulky, například ke statistickým účelům.
Dalším bleskovým talkem bylo povídání o využití KNN algoritmu k hledání podobných obrázků v databázi – zatím to příliš nefunguje, ale došlo i na funkční příklad u obrázků reprezentovaných maticí nul a jedniček (tedy například obrázky, kde je pouze černá a bílá). Následoval Oleg Bartunov a jeho výstup o zrychlení fulltextového vyhledávání v PostgreSQL, na kterém se aktuálně pracuje a zrychlení je značné.
Bylo předvedeno několik dalších věcí, z nich mě zaujalo především PGQ (PostgreSQL Queue), nástroj na generování grafů volání funkcí a řešení Postgres-R pro master–master replikaci.
Moderující Harald Armin Massa a za ním nástroj call_graph
Největší zájem však vzbudila poslední přednáška PostgreSQL Drinking Game Joshe Berkuse. Ten nadhodil, že na takovéto konference všichni doopravdy jezdí hlavně proto, aby mohli po akci jít do hospody – navrhl pro to jednoduchou hru, která spočívala v pití většího a většího množství piva, když někdo zmíní nějaký termín související s problematickým místem v PostgreSQL apod. Celá věc byla pochopitelně myšlena s nadsázkou a ovace publika byly neuvěřitelné. Jednotlivá pravidla hry (PDF) najdete spolu s ostatními slidy na wiki.PostgreSQL.org.