Linux E X P R E S

Facebook

PostgreSQL v České spořitelně

postgresql.png

Česká spořitelna využívá pro řadu účelů databázový systém PostgreSQL. Aleš Zelený popisoval na konferenci P2D2, jak nasazení tohoto systému probíhalo a jaká doporučení pro podobné případy z toho vyplynula.


Tradiční konference P2D2

Od roku 2008 se obvykle v únoru v Praze koná Prague PostgreSQL Developer Day (P2D2) – konference zaměřená na databázový systém PostgreSQL. Nejinak tomu bylo také letos, kdy se původně jednodenní konference rozšířila na dva dny. Před „hlavní“ konferenční den s přednáškami (což byl letos 18. únor) byl zařazen ještě den se školeními.

Konferenci pořádá Czech and Slovak PostgreSQL Users Group (CSPUG), sdružení českých a slovenských uživatelů PostgreSQL.

Stejně jako ten loňský, také letošní ročník se konal na Fakultě informačních technologií ČVUT v Praze (v dřívějších letech konferenci hostil především bývalý Profesní dům na Malostranském náměstí). Na účastníky čekaly zajímavé přednášky českých i zahraničních odborníků a v neposlední řadě také bohaté občerstvení v předsálí.

Setkávání účastníků konference v předsálí Setkávání účastníků konference v předsálí

Jak Česká spořitelna zaváděla PostgreSQL

Jedním z přednášejících byl Aleš Zelený, který popisoval zavádění databázového systému v České spořitelně – jak se dospělo od úplných začátků až do stavu poměrně masivního nasazení (a jaká doporučení z těchto zkušeností plynou). „To, že se PostgreSQL aktivně používá v České spořitelně, je jedna z nejlepších referencí [pro tento databázový systém], které aktuálně v České republice máme,“ uvedl přednášku Pavel Stěhule z CSPUG.

Začátky

Celý proces započal před třemi lety. „Začali jsme tím, že jsme se podívali, kolik platíme komerčním dodavatelům databázových systémů. Zjistili jsme, že finanční krize nekrize, ta částka pořád roste. Takže jsme si vzali všechen open source, co jsme našli, a začali jsme vybírat. (…) Důležité je, že to dopadlo dobře, vyhrál PostgreSQL,“ vysvětluje Aleš Zelený okolnosti volby nového databázového systému.

Proces implementace probíhal za placené odborné podpory, která je ale velmi výrazně levnější, než kolik stojí licence na proprietární databáze.

Implementace začala na „nekritických“ systémech, jako je jídelníček nebo parkovací lístky. Důležité bylo, aby se databáze stala atraktivní pro vývojáře připravující aplikace. Neméně důležitou věcí bylo, mít dobře zvládnuté zálohování včetně následné obnovy dat. Odtud vyplynulo důležité doporučení: obnovu je před ostrým nasazením potřeba vyzkoušet, myšleno „opravdu vyzkoušet“.

Aleš Zelený při přednášce o PostgreSQL v České spořitelně Aleš Zelený při přednášce o PostgreSQL v České spořitelně

Vše špatné je k něčemu dobré

Ne vše šlo ale na počátku hladce. „Jak jsme byli zvyklí provozovat Oracle, tak jsme se snažili z PostgreSQL udělat Oracle a to nebyl dobrý nápad.“ To se týkalo především toho, že se místo využití dobrého výchozího nastavení search_path pojmenovala všechna schémata a nastavení search_path se pak muselo řešit pro každého uživatele zvlášť.

Na druhou stranu tato komplikace přivedla implementační tým k myšlence, že lze „krabicový“ software využívající PostgreSQL  snadno napasovat na vlastní databázi místo té pevně nastavené – a to právě s využitím nastavení search_path. Realizace této myšlenky u systému na pořadové lístky pro klienty byla úspěšná.



Zkušenosti přibývají

Z dalších zkušeností se například osvědčilo nepoužívat a smazat schéma public, čímž se znemožní, aby někdo bez jakékoli kontroly vytvářel v databázi své objekty. Dobrou praxí se ukázalo být také rozdělení na více schémat či databází podle potřeby, v některých případech také spouštět jednotlivé instance úplně samostatně a pro každou mít samostatnou instalaci PostgreSQL (lze využívat různé verze současně).

Samostatné instalace PostgreSQL jsou na běžných linuxových distribucích trochu problém, protože s tím balíčkový systém nepočítá. Neobejde se to tak bez tvorby vlastních balíčků.

Situací, na kterou je potřeba se dobře připravit, je zaplnění místa v úložišti, ke kterému může dojít i přes veškeré prevenční úsilí a přes náležitý monitoring. „Naučili jsme se, že na svazku, kam dáváme xlogy, máme nějaký tří-, čtyřgigabajtový 'dummy' soubor, pomocí dd udělanou výplň. A pokud někdo volá, že je akutní problém, tak můžeme smazat ten soubor, začít to řešit (…) a prostě takto získáme nějaký čas.“

Osvědčilo se zvýšit význam operace autovacuum – aby v zájmu rychlejšího vykonání probíhala dostatečně často – a také operaci překonfigurovat, například navýšit paměť nebo snížit nastavenou „cenu“ operace.

Účastníci konference sledují přednášku Účastníci konference sledují přednášku

Oprávnění, aneb PostgreSQL vítězí nad Oraclem

Jak skloubit požadavek na nejmenší možná oprávnění s tím, aby se aplikace o svá privilegia nemusela starat? „Tady jsme našli v PostgreSQL velkého přítele, protože na rozdíl od Oraclu zná něco jako default privilegia. Což když zkombinujeme s tím, že využíváme schémata pro jednotlivé aplikace, můžeme 'nagrantovat' default privilegia pro lidi, kteří mají mít například read-only přístup do aplikace na nějaký troubleshooting.“ Výhodou je, že když vznikne nový objekt toho typu, pro který jsou default privilegia přidělena, automaticky se na něj tato práva uplatní.

Kritické systémy banky „jedou“ na PostgreSQL

Kam až se implementace PostgreSQL dostala? „Dnes PostgreSQL používáme pro business-kritické systémy do takové míry, že po půlhodině výpadku by se nám banka zastavila,“ odpovídá Aleš Zelený na dotaz z publika, zda už byl systém nasazen na použití v kritických aplikacích.

Diskuze (7) Nahoru