Transakční a analytická databáze

    Transakční databáze (OLTP) je ta, kterou e-shop používá k běžnému provozu: přijímá objednávky, aktualizuje sklad, jedna rychlá operace najednou. Analytická databáze (OLAP), například BigQuery, je naopak stavěná na to, aby najednou proskenovala a spočítala miliony řádků historie do reportu. Jsou to dva různé nástroje pro dva různé úkoly, ne jeden univerzální na obojí.

    Dva nástroje na dva různé úkoly

    E-shop má vlastní produkční databázi, do které se ukládá objednávka, aktualizuje sklad nebo dohledá jeden konkrétní zákazník. Je navržená na rychlé zpracování velkého množství malých operací, jedné najednou, a na to, aby nikdy nespadla. Tomu se říká transakční databáze, OLTP (Online Transaction Processing).

    Analytická databáze řeší opačný problém

    Report typu tržby podle kategorie za poslední dva roky neznamená jednu operaci, ale průchod milionů řádků historie najednou. Na tohle jsou navržené analytické databáze, OLAP (Online Analytical Processing), například BigQuery. Umí rychle proskenovat a agregovat obrovský objem dat, ale nejsou stavěné na to, aby ukládaly jednu objednávku za druhou v reálném čase.

    Proč nejde použít jedna databáze na obojí

    Návrh, který zrychluje jednu operaci najednou, zpomaluje průchod miliony řádků, a naopak. Transakční a analytická databáze nejsou dvě úrovně stejného nástroje, jsou to dva nástroje postavené na opačných kompromisech.

    Kde firmy pálí peníze

    Nejčastější chyba nevzniká z neznalosti rozdílu mezi OLTP a OLAP, ale z toho, že produkční databáze je po ruce a data v ní jsou, takže se report pustí přímo na ni.

    • Report ohrožuje běžící e-shop

      Těžký analytický dotaz pouštěný přímo proti produkční databázi zatíží stejný výkon, na kterém běží checkout a příjem objednávek. Při větším reportu nebo špatně napsaném dotazu hrozí zpomalení, nebo i výpadek části e-shopu, který právě v tu chvíli obsluhuje zákazníky. Je to reálné provozní riziko, ne teoretická možnost.

    • Data z různých zdrojů nejde snadno spojit

      Produkční databáze e-shopu obsahuje jen data e-shopu. Bez odděleného analytického skladu není kam přivést data z účetnictví nebo z reklamních účtů, aby šla spojit do jednoho pohledu, každý zdroj tak zůstává izolovaný sám pro sebe.

    • Historie mizí kvůli výkonu produkční databáze

      Kvůli výkonu se stará data v produkční databázi často mažou nebo archivují mimo dosah běžných dotazů. Meziroční srovnání nebo delší trendy pak nejdou spočítat, protože data, ze kterých by report vycházel, už v databázi nejsou.

    Proč Datimo odděluje analytickou vrstvu od provozu

    Datimo staví analytickou vrstvu (BigQuery) mimo produkční systémy. Data z e-shopu, účetnictví a reklamy se pravidelně kopírují do samostatného datového skladu, produkční databáze e-shopu se tím nezatěžuje a zůstává určená jen k tomu, k čemu je stavěná, k běžnému provozu.

    Těžké dotazy neohrožují běžící e-shop

    Report nebo segmentace se počítají nad kopií dat v odděleném skladu, ne nad databází, která právě zpracovává objednávky. Ani náročný dotaz tak neriskuje výpadek checkoutu.

    Historie zůstává k dispozici bez časového omezení

    Protože sklad neřeší výkon jednotlivé transakce, ale ukládání a agregaci dat, historie se v něm neztrácí kvůli optimalizaci provozu. Meziroční a delší srovnání tak jde spočítat i za data, která by v produkční databázi dávno neexistovala.

    Detail k samotnému skladu

    Jak konkrétně BigQuery jako analytický sklad funguje a jak se účtuje, popisujeme v pojmu BigQuery.