přejít na obsah přejít na navigaci

Linux E X P R E S, PostgreSQL v České spořitelně

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.

Nahoru

Příspěvky

Tomáš Crhonek PostgreSQL v České spořitelně
Tomáš Crhonek 22. 02. 2016, 16:00:04
Odpovědět  Odkaz 
Pěkné :-)

"čtyřgigabajtový 'dummy' soubor, pomocí dd udělanou výplň"

Toto mě překvapilo. Jestliže se místo vyčerpá tak rychle, že si toho nevšimne monitoring, tak 4GB vycpávka přece nemůže přinést mnoho času (minuta?). Za tu dobu se asi nemusí podařit nalézt příčinu proč se logy nemažou.

Na určitých místech mám "předběžné varování" na nějakých 70% zaplnění (zde se notifikace neposílá) a potom příslušné úrovně (85 - 90) na warning a critical (s notifikacemi). A to se pořád bavíme o desítkách GB volného místa.

Překvapuje mě, že zrovna v bance to musí řešit dummy soubory (a to ještě dost malými, nemělo to být 40GB?).
Lukáš Jelínek Re: PostgreSQL v České spořitelně
Lukáš Jelínek 22. 02. 2016, 17:27:06
Odpovědět  Odkaz 
No, je to dost svérázný způsob. Ale asi se jim to osvědčilo :-)
Re: PostgreSQL v České spořitelně
Karel Branda 24. 02. 2016, 12:13:59
Odpovědět  Odkaz 
>>při rychlém růstu pgxlogu žádný monitor nepomůže, totiž než se k Vám dostane info o stavu, už je plno.
>>když je plný FS, tak v lepším případě je db ve "freeze" stavu. Vyřešíte potíž a jak rozjet db bez ztráty dat? Odmažete "dummy" a db se rozjede. Přidat další volné místo do FS je řešení, ale pak jej zase potřebujete někdy odebrat, nebo se Vám to začne hromadit jak horníci v dole :-)...a tohle je fakt jednoduché rychlé řešení
PostgreSQL v České spořitelně
marian 23. 02. 2016, 23:57:47
Odpovědět  Odkaz 
Díky, škoda že není video pro nás, nemocné.

>> 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ů.

Pro rhel, centos jsou k dispozici repositáře na: http://yum.postgresql.org/
Jde mít různé verze na jednom serveru. Pokud je potřeba více instancí jedné verze, pak se jen zkopíruje init skript. U jiných distribucí nevím.
Lukáš Jelínek Re: PostgreSQL v České spořitelně
Lukáš Jelínek 24. 02. 2016, 06:15:18
Odpovědět  Odkaz 
Video bohužel není. Co se týká instalace víc verzí téhož softwaru z balíčků najednou, to by mě velice zajímalo. Doteď totiž žiju v tom (a asi nejsem sám), že balíčkový systém současnou instalaci balíčků různých verzí téhož SW nedovolí. Nebo jde RPM (a YUM) nějak čistě přesvědčit, aby instaloval balíčky někam jinam a daly se potom automaticky aktualizovat všechny verze?
Tomáš Crhonek Re: Re: PostgreSQL v České spořitelně
Tomáš Crhonek 24. 02. 2016, 09:52:01
Odpovědět  Odkaz 
Nějaká podpora pro více verzí a více instancí pg serveru je v Debianu, ale myslím si, že v době virtualizace je to celkem zbytečné přidávání práce. Pokud někdo potřebuje testovat různé verze, je lepší si je nainstalovat na různé servery.
Re: Re: Re: PostgreSQL v České spořitelně
Petr Ježek 6. 03. 2016, 16:31:28
Odpovědět  Odkaz 
Přesně tak, virtualizace to řeší s přehledem, byť lze nastavit nixové snapy pro různé verze aplikací z balíčků. Ostatně v mém Archu lze nejen instalovat vedle sebe různé kernely, ale také za pomoci ABS si vše upravit tak, jak je třeba. Platí to pro jakýkoli balíček.

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Lukáš Jelínek

Lukáš Jelínek

Dlouholetý člen autorského týmu LinuxEXPRESu a OpenOffice.cz. Vystudoval FEL ČVUT v oboru Výpočetní technika. Žije v Kutné Hoře, podniká v oblasti IT a zároveň pracuje v týmu projektu Turris. Ve volném čase rád fotografuje, natáčí a stříhá video, občas se věnuje powerkitingu a na prahu čtyřicítky začal hrát tenis.


  • Distribuce: Debian, Kubuntu, Linux Mint
  • Grafické prostředí: KDE

| proč linux | blog