Jaký je rozdíl mezi NoSQL a relačními databázemi?
Azure Cosmos DB je charakterizována jako nerelační i horizontálně škálovatelná.
Horizontální měřítko versus vertikální měřítko
Relační databáze se obvykle zvětšují zvýšením velikosti virtuálního počítače nebo výpočetních prostředků, na kterých jsou hostované. Databáze NoSQL, jako je Azure Cosmos DB, se škálují přidáním dalších serverů nebo uzlů. To se označuje jako horizontální škálování. Tyto uzly se také označují jako fyzické partice ve službě Cosmos DB. Data uložená na těchto fyzických oddílech je potřeba uspořádat, aby k nim bylo možné efektivně přistupovat později.
Data se směrují do různých fyzických oddílů pomocí hodnoty požadované vlastnosti v každém dokumentu. Tato vlastnost se nazývá klíč oddílu kontejneru, tento klíč oddílu je potřeba zadat při vytváření kontejneru. Předání klíče oddílu při zápisu nebo čtení dat z kontejneru zajišťuje, že operace jsou efektivní pouze nasměrováním požadavku na oddíl, na kterém jsou uloženy.
I když se může zdát, že potřeba klíče oddílu je omezením, má obrovské výhody. Relační databáze se obvykle může zvětšit na maximálně 100 TB. Databáze NoSQL se může zvětšit na neomezenou velikost a může tak učinit bez jakéhokoli dopadu na dobu odezvy při přístupu k datům z libovolného jednoho oddílu.
Kromě toho, jak se přidají oddíly, je také více výpočetních prostředků přidáno a současně roste množství zpracování, které podporuje databáze. To znamená, že může podporovat i více souběžných uživatelů. Také bez dopadu na výkon.
Nerelační a relační databáze
Druhou definující charakteristikou databáze NoSQL je, že mezi částmi dat neexistují žádné cizí klíče, omezení ani vynucené relace jakéhokoli druhu. Vzhledem k tomu, že data v databázi NoSQL jsou uložená na různých fyzických serverech, vynucení omezení nebo relací nebo umístění zámků na data by vedlo k negativnímu nebo nepředvídatelného výkonu.
Nicméně absence vynucených vztahů neznamená, že nemůžete spravovat entity, které mají vztahy v databázi NoSQL. Znamená to jen, že to musíte udělat jinak.
Proč jsou tyto typy databází tak odlišné?
Pochopení toho, jak se ekonomika computingu změnila od prvního zavedení relačních databází, může pomoct vysvětlit, proč jsou tyto dva typy databází tak odlišné.
Když byly relační databáze vynalezeny v roce 1970, náklady na úložiště a paměť byly vzhledem k výpočetním prostředkům vysoké. Cílem normalizace databázového modelu bylo snížit duplicitní data a tím i náklady v rámci databáze. Databázový stroj použije zámky a spouště k zajištění přísné ACID sémantiky (atomicity, konzistence, izolace, trvanlivost) při provádění operací na všech potřebných částech dat současně. Zámky na datech zajistily konzistentní data, ale s kompromisy v souběžnosti, latenci a dostupnosti.
V současné chvíli jsou náklady na úložiště a paměť relativně levné ve srovnání s výpočetními prostředky, takže aby byly nákladově efektivní, už nepotřebujeme optimalizovat efektivitu úložiště. U úloh vyžadujících zvýšení úrovně souběžnosti a dostupnosti a nižší latence bylo potřeba pro nový typ databáze, který je optimalizovaný pro tyto požadavky, a proto se narodily databáze NoSQL.
Je to také z těchto důvodů, že jedním z cílů modelování dat pro databázi NoSQL je to způsobem, který zajišťuje efektivní čtení nebo zápis dat. Částečně proto, že relační operátory, jako jsou křížová spojení mezi dokumenty, v databázích NoSQL neexistují, musí být data uložená podle potřeb aplikace, aby byla co nejúčinnější. Data často musí být denormalizovaná, duplikovaná nebo jinak uložená způsobem, který porušuje mnoho pravidel relační normalizace, která se používají pro modelování relačních dat.
Můžete použít NoSQL pro relační úlohy?
V tomto okamžiku vás může zajímat, jestli jsou databáze NoSQL vhodné pro relační úlohy. A odpověď je ano! Databáze NoSQL se dají naprosto použít pro úlohy, ve kterých existují relace mezi různými entitami.
Databáze NoSQL se často používají, když relační databáze nesplňuje požadavky aplikace na požadovaný výkon, škálování nebo dostupnost.
Techniky návrhu databáze NoSQL se liší od technik modelování dat pro relační databázi. Tyto techniky také nejsou intuitivní pro někoho s pozadím v návrhu relační databáze. Některé z osvědčených postupů, které se naučíte při vytváření relačních databází, jsou při navrhování databází typu NoSQL často považovány za nevhodné vzory.
Pro zbytek tohoto modulu a v pokročilém modulu modelování vás provedeme technikami, které se používají k modelování dat způsobem, který bude mít za následek vysoce výkonnou databázi NoSQL.