Rychlý přehled relačních a nerelačních databází

Moje zkušenost s vývojem databází byla zatím omezena na relační („SQL“) databáze. Při zkoumání populárních technologických balíčků používaných profesionálními vývojáři jsem se však setkal s MEAN stackem (MongoDB, Express, Angular a Node), který mě pak vedl k výzkumu MongoDB a konceptu databází, které se nespoléhají na techniky slouží k ukládání dat v relačních databázích.

Za prvé: rychlé opakování základních pojmů relační databáze. Relační databáze jsou založeny na Relačním modelu dat, který poprvé navrhl anglický počítačový vědec EF Codd v roce 1970. Data jsou organizována na základě toho, jak každá tabulka spolu souvisí, a tyto vztahy jsou kvantifikovány na základě „cizích klíčů“ v každém tabulka, která identifikuje, které zahraniční tabulky se vztahují k aktuální tabulce, kterou dotazujete. Téměř všechny relační databáze používají SQL k vyhledávání a údržbě databáze.

Jednoduchý příklad relační databáze

Non-relační, nebo "NoSQL" databáze je termín catch-all pro databáze, které nespoléhají na výše uvedený model organizovat data. Jedním z nejjednodušších příkladů by mohla být databáze, která je uspořádána kolem párů klíč-hodnota. Dalším běžným příkladem jsou databáze orientované na dokumenty, které jsou uspořádány kolem předpokladu, že všechny záznamy v databázi jsou dokumenty, které byly zakódovány v nějakém standardizovaném formátu souboru (například JSON).

Proč používat databázi NoSQL?

Non-relační databáze mohou mít přitažlivé množství jednoduchosti ve srovnání s relačními databázemi, které často rostou ve složitosti, jakmile se vytvoří více vztahů mezi tabulkami. Pokud víte, že data, se kterými budete pracovat, jsou relativně jednoduchá, může stačit jednoduchá kolekce obchodů s klíčovou hodnotou. Tento problém se složitostí se může přenést na problémy s výkonem. S malými aplikacemi, které jsme vytvořili a pracujeme, to nebude problém, ale pro aplikaci nebo web s miliony uživatelů může špatně organizovaná relační databáze významně zpomalit vaši aplikaci. Protože databáze NoSQL nemají spojovací tabulky, mohou potenciálně provádět dotazy rychleji než relační databáze.

Pomalé načítání stránky výrazně zvyšuje míru okamžitého opuštění

NoSQL databáze mohou také nabídnout lepší škálovatelnost, pokud potřebujete měřítko vodorovně na rozdíl od svisle. Horizontální škálování je způsob přidání měřítka přidáním dalších strojů, které splňují vaše požadavky na data, zatímco vertikální škálování to řeší přidáním dalšího výpočetního výkonu. Horizontální škálování je jedním z důvodů, proč se databáze NoSQL začaly stávat stále populárnějšími, protože internet také rostl v popularitě, protože společnosti potřebovaly spravovat potenciálně miliony uživatelů, kteří narazili na své webové stránky současně.

Jsou databáze NoSQL vždy lepší volbou?

Pro webové aplikace s velkým množstvím dat jen pro čtení, kde je rychlost prvořadá, mohou být databáze NoSQL dobrou volbou. Pro komplexní databáze s velkým množstvím strukturovaných a vzájemně propojených dat však nemusí být NoSQL nejlepším řešením. Příliš zjednodušující databáze si vynutí hodně obchodní logiky, která je implicitně vynucena relačním modelem dat do vašeho skutečného kódu aplikace. Databáze NoSQL jsou také obecně méně vyspělé než jejich relační protějšky. To znamená, že mohou být méně stabilní, což může být závažný problém, pokud jednáte s velkým množstvím citlivých údajů, jako jsou finanční transakce nebo lékařské údaje. Problém může být také nedostatek standardizovaného jazyka dotazu. Každý, kdo je obeznámen s SQL, se může rychle připravit na dotazy v nové databázi, zatímco práce s databází NoSQL může vyžadovat naučení se jiného jazyka dotazů, což zpomaluje, jak rychle se nový zaměstnanec může dostat na rychlost a být produktivní. A konečně, NoSQL databáze jsou často uváděny na trh k webovým serverům a aplikacím, kde se většina datového toku točí kolem CRUD. V situacích, kdy je vyžadována složitější obchodní analytika, může být lepší volbou databáze SQL.

Porovnání různých databází NoSQL s relační databází

Zdroje / další čtení

https://www.hadoop360.datasciencecentral.com/blog/advantages-and-disadvantages-of-nosql-databases-what-you-should-k