Jaký je rozdíl mezi NoSQL a relačními databázemi?

Dokončeno

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 škálování služby Azure Cosmos DB, přidáním dalších serverů nebo uzlů To se označuje jako horizontální navýšení kapacity. Tyto uzly se také označují jako fyzické oddíly ve službě Cosmos DB. Data uložená na těchto fyzických oddílech je potřeba uspořádat, aby k němu 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á 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.

Vynucené relace ale neznamená, že nemůžete spravovat entity, které mají relace v databázi NoSQL, jenom to znamená, že je potřeba to 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 západky k vynucení striktní sémantiky ACID (atomicity, konzistence, izolace, stálosti) při provádění operací na všech potřebných částech dat. 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 spojení mezi dokumenty, neexistují v databázích NoSQL, musí být data uložená jako aplikace, aby byla 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áze NoSQL často antipatterny.

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.