SQL vs NoSQL
Také známo jako Relační vs dokumentové databáze, Document store
Stručně
Relační databáze jsou rozumná výchozí volba; dokumentová úložiště vyhrají jen tam, kde data opravdu nemají pevný tvar.
SQL databáze ukládají data do typovaných tabulek a spojují je až při dotazu; NoSQL systémy jako MongoDB ukládají samostatné dokumenty s volným tvarem. Ani jedno není modernější — odpovídají na jiné otázky o konzistenci, relacích a tom, jak se s daty bude pracovat.
Kdy dokumentové úložiště opravdu vyhraje
Reálné případy existují. Událostní log, který se jen přidává a téměř nikdy needituje, katalog od dodavatele, kde má každá kategorie jiné atributy, koncept v CMS, jehož tvar se mění každý týden. Dokumentové úložiště ubere migrace a celý objekt načte jedním dotazem.
Objekty, které se čtou jako celek a jako celek se zapisují — vygenerovaný report, AI konverzace s jejími zprávami — sednou taky. Dokument je jednotka, kterou načtete, a nikdo nechce kvůli oknu chatu joinovat čtrnáct tabulek.
Argument škálováním bývá předčasný
„Na škálování potřebujeme NoSQL“ zazní skoro v každém projektu dřív, než existuje první reálný uživatel. Jedna instance PostgreSQL utáhne většinu českých e-shopů ještě s rezervou a když přestane stačit, prvním krokem bývá read replica nebo cache, ne nový databázový princip.
Skutečná cena dokumentového úložiště, kterému později chybí relace — faktury odkazující na zákazníka a položky, reporty po měsících a regionech — je bolestivá migrace a kód, který si joiny skládá ručně. Vybírejte podle toho, jak se bude data číst, ne jak se budou zapisovat.
Upřímné pravidlo palce
Začněte PostgreSQL. Na NoSQL přejděte, když platí dvě věci zároveň: data opravdu nemají stabilní tvar a prototyp v PostgreSQL už měřitelně nestačí. Dvě podmínky — ne pocit.
Hranice ostatně nevede mezi NoSQL a SQL. Obě nakonec potřebují záruku konzistence a nějaké schéma; jedna ho vynucuje v databázi, druhá ve vaší hlavě. Vyberte, kde má ta záruka žít.
Zdroje
Související pojmy
PostgreSQL
Open-source relační databáze, se kterou je nejlepší začít: relace, joiny, transakce a JSONB v jednom prověřeném systému.
Cachování
Uložení drahého výsledku, aby další požadavek stál skoro nic — silné a snadno nenápadně špatné.
Fronta zpráv
Pomalá nebo riskantní práce opouští požadavek: worker ji vyzvedne z fronty a při selhání ji bezpečně zopakuje.