Výběr nejvhodnější databáze a platformy pro integraci dat

  • Žádná databáze není stejná. Liší se v mnoha parametrech – výkonu, možnostech programovatelnosti, schopnostech zpracování dat, podpoře různých funkcí apod. Výběr té správné pro vaši aplikaci je tak velmi klíčové.

Sdílet

Databáze urazily dlouhou cestu od počátku osmdesátých let, kdy běžely jen na mainframech a mohli jste si vybrat jen databáze Codasyl nebo relační.

Databáze Codasyl bývaly dvakrát rychlejší než relační, ale výsledkem zlepšení hardwaru počítačů a pohodlí dotazů SQL (ve srovnání s programováním navigačního kódu databáze) byla dominance relačních databází na trhu.

Nyní jsou databáze všude – počínaje chytrými telefony, přes servery a datová centra až po geograficky distribuované cloudové databáze. Kromě relačních tabulkových databází existují databáze pro časové řady, grafy, prostor, text, online analytické zpracování (OLAP), XML a JSON.

Některé databáze se specializují na jediný druh dat, jiné nabízejí výběr více datových typů, ale možnost najednou použít jen jeden z nich, a další nabízejí možnost současné existence více datových typů v jedné instanci databáze.

Některé databáze se specializují na zpracování on-line transakcí (OLTP), některé na analýzy (OLAP) a některé fungují dobře s kombinovanou transakční a analytickou pracovní zátěží.

Podnikové aplikace mají různé požadavky – a tomu by měl odpovídat i výběr databáze, se kterou budou ve finále pracovat. Existuje několik základních kritérií, které výběr ovlivňuje.

Zpravidla není řešením dát na marketingové rady výrobců databází anebo se prostě uchýlit k té databázi, kterou už ve firmě máte. Pouze správné pochopení oněch kritérií ve vztahu k vaší aplikaci vám dovolí ji používat opravdu efektivně.

A jaká ta kritéria jsou? V první řadě byste se měli zeptat, kolik dat vlastně budete ukládat. Pokud to budou řádově gigabajty, pak vaše potřeby splní jakákoliv databáze. V případě desítek terabajtů či dokonce petabajtů už je výběr podstatně omezenější a vyplatí se dokonce uvažovat o hierarchických systémech.

Podobné je to i u počtu uživatelů při špičkovém zatížení, kdy pro desítky přístupů je výběr mnohem širší než v případě tisíců uživatelů s velkými požadavky. V tomto případě se ale ne vždy dá odhadnout počet současně přistupujících lidí – třeba u veřejných databází, takže je vhodné zvážit dynamické horizontální škálování – a to už bohužel ne všechny současné databáze zvládnou. 

Další kritérium u databází se pak týká dostupnosti, škálovatelnosti, latence, propustnosti či konzistence dat, která je pro vaší aplikací nezbytná. Třeba vysoká dostupnost je klíčová pro transakční databáze.

Latence bude zase důležitá pro řešení, kde se vyžaduje rychlá reakce na dotazy. Také třeba zpoždění výsledků při analytickém dotazu může uživatele odrazovat, takže tady je nezbytná schopnost rychle číst data.

Některé databáze mají rychlejší čtení, jiné zase zápis – takže vybírejte podle toho, na jaký typ práce s daty je vaše aplikace zaměřená.  

Propustnost, obvykle měřená v transakcích za sekundu, je zase klíčová pro aplikace, kde se očekává velký počet dotazů od mnoha uživatelů. Důležitá je i konzistence dat – pokud se vaše data příliš nemění, použijete jinou databázi, než v případě, kdy se pracuje s rychle se měnícími údaji.

Důležité je i umístění uživatelů – pokud jsou roztroušeni na větší geografické vzdálenosti, pak přístup k jedné instanci databáze může být pro ty vzdálenější nepříjemným uživatelským zážitkem, a proto je dobré nasadit databáze umožňující geografickou distribuovanost – pozor pak ale na konzistentnost dat.

Dalším klíčovým parametrem je podoba dat – zda jde o strukturované údaje, pro které se hodí tabulkové databáze, třeba typu SQL (pro analýzu dat bude někdy nutné tato data upravit). Jiné typy databází se pak vyžadují pro nestrukturované údaje, jako třeba výstupy ze zařízení internetu věcí, záznamy ze sociálních sítí apod.

Při výběru databáze je nutné zohlednit i to, zda vaše aplikace bude pracovat s geografickými daty a využívat fulltextové vyhledávání – ne všechny systémy totiž tyto operace dostatečně dobře podporují.

A konečně byste při výběru měli zvážit i to, jaké programovací jazyky databáze podporuje – i když většina dovoluje fungovat s různými rozhraními API, někdy se hodí rozšířené možnosti – třeba pro JavaScript je nativním datovým formátem JSON, takže pro své javascriptové aplikace budete chtít využít databázi s přímou podporou JSON.

Platforma pro integraci dat

Firmy obvykle pracují s různými zdroji dat – a jejich data musejí sloužit širším obchodním potřebám . Proto je obvyklé nutné je integrovat s jinými zdroji dat a poté je používat pro analytiku, aplikace orientované na zákazníky nebo pro interní pracovní toky.

Příkladem může být situace, kdy se data z e-shopu integrují s analýzou uživatelů, údaji ze systému CRM (řízení vztahů se zákazníky) tak, aby se přizpůsobila marketingová komunikace.

Také práce firemních datových vědců či inovátorů silně závisí na integraci různých údajů z rozličných zdrojů, a to interních i externích. A pro smysluplné nasazení umělé inteligence je široká sada učících dat z různých prostředí dokonce nezbytností pro správné fungování.

Základní metodou, jak přesunout data ze zdroje k cíli, je skriptování – jde o krátký kód, který automaticky provádí potřebná ověření dat a zasílá je do jednoho nebo několika cílů (může to mít i podobu mikroslužby či procedury integrované přímo v databázi). Tyto procesy mohou data před jejich odesláním do cílových zdrojů navíc různě filtrovat, čistit, ověřovat nebo transformovat.

I když skriptování představuje rychlý a snadný způsob, jak různá data integrovat, má také své slabiny, které se projeví především při zpracovávání větších objemů dat, kdy je potřeba mít robustní algoritmy pro validaci údajů.

Slabinou skriptování jsou i situace, kdy je nutné nad daty nasadit nějakou náročnější logiku nebo je potřeba údaje složitěji transformovat. Složité skripty jsou navíc náročné na programování i na vytváření či modifikace a rovněž je obtížné je přenášet z jednoho prostředí na jiné.

A i proto se v poslední době stávají populárními pokročilé platformy pro integraci dat, které umožňují vývoj, testování, provoz i aktualizaci více datových kanálů, což představuje mnohem více činností, že by zvládli vývojáři pomocí vlastního kódu. Co byste tedy měli od platformy pro integraci dat požadovat?

V první řadě nástroj specializovaný na vývoj a zlepšování integrací, s podporou vizualizace a snadného ovládání třeba pomocí techniky drag-and-drop. Dále jde o konektory, které umožní snadnou integraci s běžnými podnikovými systémy, platformami SaaS, databázemi, platformami big dat i cloudovými službami.

Důležitá je i schopnost zpracovávat více datových struktur a formátů nad rámec relačních datových struktur a typů souborů (platformy pro integraci dat obvykle podporují JSON, XML, Parquet, Avro, ORC a často také formáty specifické pro dané odvětví).

Vyspělé možnosti pro řízení kvality dat a jejich správu jsou dalšími obvyklými požadavky, které se na zmíněné integrační platformy kladou. Také je vhodné zvážit nativní podporu analytiky a modelů AI/strojového učení.

Pro programátory mohou být užitečné možnosti spojené s vývojovým prostředím typu DevOps nebo DataOps nebo schopnost automaticky vytvářet datové kanály pomocí více metod, jako jsou naplánované úlohy, spouštěče řízené událostmi nebo streamování v reálném čase, a to vše doplněné o provozní hlášení o výkonu, upozornění na problémy datových zdrojů i jejich zpracování.

Součástí těchto platforem by měly být i specifické nástroje zaměřené na bezpečnost a dodržování předpisů, kam spadají třeba šifrovací řešení, schopnost auditování, správa přístupu či integrace s datovými katalogy.

A na škodu určitě nebude ani úzká integrace s komplexními správními systémy, agilním vývojem a dalšími IT platformami.

Jak vyplývá z výše uvedeného, výběr správné databáze i platformy pro integraci dat není jednoduchým procesem, jehož výsledkem jsou často různé kompromisy. Při výběru však vždy myslete i na budoucí využití i na to, že bez dobře fungujících databází i integrace dat se jako firma v budoucnu už určitě neobejdete.