Úvod
Díky jedinečným schopnostem překonávají databáze NoSQL omezení nalezená v relačním databázovém modelu. NoSQL je zastřešující termín pro čtyři hlavní podmnožiny databází NoSQL:
- Databáze klíč–hodnota
- Sloupcové databáze
- Databáze grafů
- Databáze dokumentů
V tomto článku vysvětlíme, co je databáze dokumentů, popíšeme její výhody a nevýhody a uvedeme příklady.
Definice databáze dokumentů
Databáze dokumentů je typ databáze NoSQL, která ukládá data jako dokumenty JSON namísto sloupců a řádků. JSON je nativní jazyk používaný k ukládání a dotazování dat. Tyto dokumenty lze seskupit do kolekcí a vytvořit databázové systémy.
Každý dokument se skládá z několika párů klíč–hodnota. Zde je příklad dokumentu, který se skládá ze 4 párů klíč-hodnota:
{
"ID" : "001",
"Book" : "Java: The Complete Reference",
"Genre" : "Reference work",
"Author" : "Herbert Schildt",
}
Použití JSON umožňuje vývojářům aplikací ukládat a dotazovat se na data ve stejném formátu modelu dokumentu, jaký používají k uspořádání kódu své aplikace. Objektový model lze převést do jiných formátů, jako jsou JSON, BSON a XML.
Relační vs databáze dokumentů
Systémy správy relačních databází (RDBMS) spoléhají na strukturovaný dotazovací jazyk (SQL). NoSQL ne.
RDBMS se zaměřuje na vytváření vztahů mezi soubory pro ukládání a čtení dat. Databáze dokumentů jsou zaměřeny na samotná data a vztahy jsou reprezentovány vnořenými daty.
Klíčová srovnání mezi relačními a dokumentovými databázemi:
RDBMS | Systém databáze dokumentů |
---|---|
Strukturováno kolem konceptu vztahů. | Zaměřeno na data spíše než vztahy. |
Uspořádá data do nic (nebo řádky). | Dokumenty mají vlastnosti bez teoretických definic, namísto řádků. |
Definuje data (vztahy formulářů) pomocí omezení a cizích klíčů (např. podřízená tabulka odkazuje na hlavní tabulku prostřednictvím svého ID). | Žádný jazyk DDL pro definování schémat. |
K vytváření vztahů používá DDL (Data Definition Language). | Vztahy reprezentované pomocí vnořených dat , nikoli cizí klíče (každý dokument může obsahovat další vnořené uvnitř, což vede ke vztahu N:1 nebo 1:N mezi dvěma entitami dokumentu). |
Nabízí extrémní konzistenci , kritické pro některé případy použití, jako je denní bankovnictví. | Nabízí případnou konzistenci s obdobím nekonzistence. |
Funkce databází dokumentů
Databáze dokumentů poskytují rychlé dotazy, strukturu vhodnou pro zpracování velkých dat, flexibilní indexování a zjednodušený způsob údržby databáze. Je efektivní pro webové aplikace a byl plně integrován velkými IT společnostmi, jako je Amazon.
Přestože mají databáze SQL velkou stabilitu a vertikální výkon, potýkají se s velmi velkými databázemi. Případy použití, které vyžadují okamžitý přístup k datům, jako jsou zdravotnické aplikace, jsou vhodnější pro databáze dokumentů. Databáze dokumentů usnadňují dotazování na data pomocí stejného modelu dokumentu, který byl použit pro kódování aplikace.
Případy použití databází dokumentů
Případy obecného použití | |
---|---|
Uživatelské profily | Extrahování velkých dat v reálném čase |
Databáze knih | Data různých struktur |
Správa obsahu | Katalogy |
Údaje pacientů |
Některé z výše uvedených případů použití pokryjeme podrobněji v následujících částech.
Databáze knih
K vytvoření databáze knih se používají relační i NoSQL dokumentové systémy, i když různými způsoby.
Relační přístup by představoval vztah mezi knihami a autory prostřednictvím tabulek s ID – Autor stůl a Knihy stůl. Přinutí každého autora mít alespoň jednu položku v tabulce Knihy tím, že zakáže hodnoty null.
Pro srovnání, model dokumentu vám umožňuje vnořit se . Ukazuje vztahy přirozeněji a jednodušeji tím, že zajišťuje, že každý autorský dokument má vlastnost s názvem Knihy , s řadou souvisejících knižních dokumentů ve vlastnictví. Když hledáte autora, zobrazí se celá sbírka knih.
Správa obsahu
Vývojáři využívají databáze dokumentů k vytváření platforem pro streamování videa, blogů a podobných služeb. Každý soubor je uložen jako jeden dokument a databáze se snáze udržuje, protože se služba postupem času vyvíjí. Významné úpravy dat, jako jsou změny datového modelu, nevyžadují žádné prostoje, protože není nutná žádná aktualizace schématu.
Katalogy
Databáze dokumentů jsou mnohem efektivnější než relační databáze, pokud jde o ukládání a čtení souborů katalogu. Katalogy mohou obsahovat tisíce uložených atributů a databáze dokumentů poskytují rychlé čtení. V databázích dokumentů jsou atributy související s jedním produktem uloženy v jediném dokumentu. Úprava atributů jednoho produktu neovlivní ostatní dokumenty.
Výhody a nevýhody databáze dokumentů
Níže jsou uvedeny některé klíčové výhody anevýhody databází dokumentů:
Výhody databáze dokumentů | Nevýhody databáze dokumentů |
---|---|
Bez schématu | Omezení kontroly konzistence |
Rychlejší tvorba a péče | Slabé stránky atomicity |
Žádné cizí klíče | Zabezpečení |
Otevřené formáty | |
Vestavěné verzování |
Výhody a nevýhody jsou dále vysvětleny v oddílech níže.
Výhody
- Bez schématu . Neexistují žádná omezení ve formátu a struktuře ukládání dat. To je dobré pro uchování existujících dat v obrovských objemech a různých strukturních stavech, zejména v neustále se transformujícím systému.
- Rychlejší tvorba a auto E. Jakmile dokument vytvoříte, je vyžadována minimální údržba, což může být stejně jednoduché jako jedno přidání složitého objektu.
- Žádné cizí klíče . Bez této dynamiky vztahu mohou být dokumenty na sobě nezávislé.
- Otevřené formáty . Čistý proces sestavení, který k popisu dokumentů používá XML, JSON a další odvozeniny.
- Vestavěné verzování . Jak vaše dokumenty rostou ve velikosti, mohou také růst ve složitosti. Správa verzí snižuje počet konfliktů.
Nevýhody
- Omezení kontroly konzistence . Ve výše uvedeném příkladu použití databáze knih by bylo možné vyhledat knihy od neexistujícího autora. Můžete prohledávat knižní sbírku a najít dokumenty, které nejsou spojeny s autorskou sbírkou.
Každý záznam může také duplikovat informace o autorovi pro každou knihu. Tyto nekonzistence nejsou v některých kontextech významné, ale na vyšších úrovních auditů konzistence RDB vážně narušují výkon databáze. - Slabé stránky atomicity . Relační systémy také umožňují upravovat data z jednoho místa bez nutnosti JOINů. Všechny nové čtecí dotazy zdědí změny provedené ve vašich datech pomocí jediného příkazu (jako je aktualizace nebo smazání řádku).
U databází dokumentů bude změna zahrnující dvě kolekce vyžadovat spuštění dvou samostatných dotazů (pro každou kolekci). To porušuje požadavky na atomicitu. - Zabezpečení . Téměř polovina webových aplikací dnes aktivně uniká citlivá data. Vlastníci databází NoSQL proto musí věnovat pečlivou pozornost zranitelnostem webových aplikací.
Nejlepší databáze dokumentů
Amazon DocumentDB
Vlastnosti:
- Kompatibilní s MongoDB
- Plně spravováno
- Vysoký výkon s nízkou latencí dotazování
- Přísné dodržování předpisů a zabezpečení
- Vysoká dostupnost
Používá se pro:
- Amazon celý vývojový tým používá Amazon DocumentDB ke zvýšení agilnosti a produktivity. Potřebovali vnořené indexy, agregace a ad hoc dotazy s plně spravovaným procesem.
- BBC používá jej k dotazování a ukládání dat z více datových toků a kompilaci do jednotlivých zákaznických kanálů. Přešli na Amazon DocumentDB, aby získali výhody plně spravované služby s vysokou dostupností, trvanlivostí a výchozími zálohami.
- Rappi přešel na Amazon DocumentDB, aby se zkrátil čas kódování, Dow Jones pro zjednodušení operací a Samsung pro lepší manipulaci s velkými kmeny flexibilněji.
MongoDB
Vlastnosti:
- Ad hoc dotazy
- Optimalizované indexování pro dotazování
- Sharding
- Vyrovnávání zátěže
Používá se pro:
- Forbes zkrácení doby sestavování o 58 %, což znamená 28% nárůst předplatného díky rychlejšímu vytváření nových funkcí, jednoduššímu začlenění a lepšímu zpracování stále rozmanitějších typů dat.
- Toyota zjistil, že je pro vývojáře mnohem jednodušší pracovat vysokou rychlostí pomocí přirozených dokumentů JSON. Více času se věnuje budování obchodní hodnoty namísto datového modelování.
Cosmos DB
Vlastnosti:
- Jakékoli rychlé čtení na stupnici
- 99,999% dostupnost
- Plně spravováno
- Rozhraní API NoSQL/Native Core
- Bezserverové, nákladově efektivní/okamžité škálování
Používá se pro:
- Coca-Cola získává statistiky během několika minut, což usnadňuje globální škálování. Před migrací do Cosmos DB to trvalo hodiny.
- ASOS potřebovali distribuovanou databázi, která by se flexibilně a bez problémů škálovala, aby zvládla více než 100 milionů globálních maloobchodních zákazníků.
ArangoDB
Vlastnosti:
- Ověření schématu
- Různé indexování
- Rychle distribuované shluky
- Efektivní versus velké datové sady
- Podporuje více datových modelů NoSQL
- Kombinovat modely do jednotlivých dotazů
Používá se pro:
- Oxfordská univerzita snížení návštěvnosti nemocnic a zlepšení výsledků testů díky vývoji webového hodnotícího testu na kardiopulmonální onemocnění.
- FlightStats transformovala fragmentovaná letová data (stav letu, počasí, zpoždění na letištích a referenční data) do jednoho standardu, což umožňuje přesné, prediktivní a analytické výsledky.
Couchbase Server
Vlastnosti:
- Schopnost spravovat globální nasazení
- Mimořádná hbitost a flexibilita
- Rychlé ve velkém měřítku
- Snadná integrace cloudu
Používá se pro:
- BT použil flexibilní datový model Couchbase k urychlení své kapacity pro poskytování obsahu s vysokým výkonem při snadném škálování proti špičkám poptávky.
- eBay migrovali z Oracle pro nákladově efektivnější řešení s použitelnými funkcemi (jejich systému úložiště klíč-hodnota/dokument). Výkon a dostupnost aplikací rostly, zatímco vývojáři mohli využít své znalosti SQL k urychlení procesu CI/CD pomocí flexibilnějšího schématu.
CouchDB
Vlastnosti:
- GUI založené na prohlížeči
- Nabízí nejjednodušší replikace
- Ověření uživatele
- Vlastnosti KYSELIN
Používá se pro:
- Meebo, sociální platforma, používala CouchDB pro webové rozhraní a jeho aplikace.
- BBC používá CouchDB pro své platformy dynamického obsahu.
Jak si vybrat?
O tom, jak strukturovat data, rozhodují kritické požadavky vaší aplikace. Několik klíčových otázek:
- Budete více číst nebo psát? Relační systémy jsou lepší, pokud píšete více, protože se během aktualizací vyhýbají duplikacím.
- Jak důležitá je synchronizace? Díky svému ACID frameworku to relační systémy dělají lépe.
- Jak moc bude v budoucnu potřeba transformovat vaše databázové schéma? Databáze dokumentů jsou vítěznou volbou, pokud pracujete s různými daty ve velkém měřítku a vyžadujete minimální údržbu.
Ani dokument, ani SQL nejsou striktně lepší než ostatní. Správná volba závisí na vašem případu použití. Při rozhodování zvažte typy operací, které budou nejčastěji prováděny.