Linux E X P R E S

Facebook

PostgreSQL v prostředí rozsáhlých IPTV/OTT platforem

IPTV

Myslíte si, že se databáze PostgreSQL nehodí pro prostředí internetové televize? Roman Fišer na konferenci P2D2 ukázal, že ji lze s úspěchem využívat i pro rozsáhlé platformy.


K čemu se hodí PostgreSQL?

Kdo navštěvuje konference zaměřené na databázový systém PostgreSQL (ať už lokální akce jako P2D2 nebo ty globálnější, například PostgreSQL Conference Europe), jistě se setkal s celou škálou různých využití tohoto systému – ať už z kategorie OLTP či OLAP, pro ukládání velmi specifických dat, pro realizaci interaktivních aplikací, s naprostým odstíněním aplikace od tabulek apod.

Ale i tak se stále objevují nové oblasti, v nichž se PostgreSQL s úspěchem používá. Jednou z takových oblastí je internetová televize (IPTV). Roman Fišer na konferenci P2D2 popsal řešení, které se využívá u rozsáhlých platforem nasazených v reálném provozu (například v O2 TV nebo České televizi).

Maskot PostgreSQL nesměl na konferenci chybět (foto: Martin Swiech) Maskot PostgreSQL nesměl na konferenci chybět (foto: Martin Swiech)

Řešení použité v nangu.tv

Jedním z velkých překvapení může být, že ve firmě nangu.tv, které televizní platformu vytvořila, se PostgreSQL používá pro tyto účely už od verze 8.0, která spatřila světlo světa v roce 2005. Právě v této verzi přišla řada novinek pro podnikové nasazení, přestože to samozřejmě s dnešními verzemi lze jen těžko srovnávat.

Přečtete si tehdejší článek Pavla Císaře, který se právě novinkám v PostgreSQL 8.0 věnuje.

Aktuálně se v rámci platformy používá převážně verze 9.4, některé instance ještě běží na 9.2. Chystá se přechod na nejnovější verzi 9.6.

Dalším překvapením je široké spektrum konkrétních účelů, k nimž se tato databáze využívá. Celkem je v provozu zhruba 60 instancí sloužících celé řadě komponent celé platformy. Mezi tyto komponenty patří:

  • middleware (pro billing, reporting, analýzy...)
  • back-end (poskytování vlastních videodat rozdělených na „chunky“ o délce 20 sekund)
  • keystore (úložiště klíčů pro účely DRM)
  • autentizace a autorizace (OAuth, jednotné přihlašování, autentizační tokeny atd.)

„Začínali jsme jako poměrně malá firma, která cílila na bázi cca 20 tisíc uživatelů,“ vrací se do historie Roman Fišer. „Bylo to všechno v jednom datovém centru, databáze běžely na serverech společně s aplikacemi. Dobře to fungovalo, ten provoz tam byl relativně malý.“ Platforma ale postupně rostla, až se dostala na dnešní stovky tisíc uživatelů. Nyní jsou nasazení řešena jako geograficky redundantní a platforma se připravuje pro poskytování služeb více než milionu uživatelů.

Přednáška o využití PostgreSQL pro IPTV/OTT (foto: Tomáš Vondra) Přednáška o využití PostgreSQL pro IPTV/OTT (foto: Tomáš Vondra)

Původně se pro replikace dat využívala technologie drbd, později se přešlo na replikaci v rámci PostgreSQL (kde významně pomohla verze 9.4, hlavně při řešení problémů se zámky). Protože hlavní cluster je citlivý na dobu latence (musí být nízká, aby nedocházelo k výpadkům ve vysílání), pro OLAP účely se využívají samostatné repliky. Využívá se také centrální connection pooling.

„Jak postupně rostete, nejdřív se vám tam daří hledat dobře řešitelné věci – přeformulovat dotaz, přidat nějaký index... A aplikace je rázem podstatně rychlejší.“ Ale postupně je další zrychlování čím dál těžší. Proto přišlo na řadu například zavedení masivnícho cachování na všech úrovních.

Všechno do PostgreSQL ... ale něco raději zase ven

Původní podoba platformy byla takové, že bylo opravdu všechno v databázi PostgreSQL. Ale později v rámci zlepšování škálovatelnosti něco opět „muselo ven“. A tak data, která příliš do relační databáze nepatří, skončila jinde. Typicky se to týkalo netransakčních dat.

Logy tak putovaly do databáze Apache Cassandra (vysoce škálovatelný hybrid sloupcové databáze a databáze klíč–hodnota), pro vyhledávání se využívá Elasticsearch, jako sběrnice zpráv RabbitMQ a pro data ze set-top boxů klasický syslog.

K milionu uživatelů

V rámci dosažení podpory milionu uživatelů se chystá kromě jiného rozšíření (již nyní používaného) partitioningu databází, čímž se vyřeší i dosud se občas vyskytující problémy s údržbou databází. Ale nejen to. „Co nás určitě nemine, je implementace shardingu,“ říká Roman Fišer. „Dále to bude oddělení aplikací, uděláme nějaké menší celky.“ Bude se muset také řešit zvládnutí situací, kdy se při nějakém krátkém výpadku ztratí cache a pak přijde „nával požadavků“.

Účastníci P2D2 si mohli ve vestibulu prohlédnout diplomové práce budoucích architektů - zde revitalizace strahovského stadionu Účastníci P2D2 si mohli ve vestibulu prohlédnout diplomové práce budoucích architektů – zde revitalizace strahovského stadionu

Diskuze (0) Nahoru