Za posledních několik let si NoSQL nebo nerelační databázové nástroje získaly velkou popularitu, pokud jde o ukládání velkého množství dat a jejich snadné škálování. Probíhají debaty o tom, zda nerelační databáze v budoucnu nahradí relační databáze. S rostoucím počtem sociálních dat a dalších nestrukturovaných dat jsou některé z otázek vznesených u relačních databází následující.
Jsou relační databáze schopné zpracovávat velká data?
Jsou relační databáze schopny škálovat masivní množství dat?
Jsou relační databáze vhodné pro data moderní doby?
Než odpovíte na tyto otázky, dejte nám vědět některé základy relačních i nerelačních databází.
Základy relačních a nerelačních databází
Relační databáze: Koncept relační databáze byl vyvinut v 70. letech 20. století. Nejdůležitější vlastností všech relačních databází je podpora vlastností ACID (Automicity, Consistency, Isolation and Durability), které zajišťují spolehlivé zpracování všech transakcí.
Automaticky: Každá transakce je jedinečná a zajišťuje, že pokud jedna logická část transakce selže, vše se vrátí zpět, takže data zůstanou nezměněna.
Konzistence: Všechna data zapsaná do databáze podléhají definovaným pravidlům (omezení, spouštěče atd.)
Izolace: Změny provedené v transakci nejsou viditelné pro ostatní transakce, dokud nejsou potvrzeny.
Trvanlivost: Změny provedené v transakci jsou uloženy a dostupné v databázi, i když dojde k výpadku napájení nebo se databáze náhle přepne do režimu offline.
Přísně strukturované: Objekty v relačních databázích jsou přísně strukturované. Všechna data v tabulce jsou uložena v řádcích a sloupcích. Každý sloupec má datový typ. Většinou je to normalizované. Structured Query Language (SQL) je vhodný pro relační databáze k ukládání a získávání dat strukturovaným způsobem. Dotazy jsou příkazy v jednoduché angličtině. Vždy existuje pevný počet sloupců, i když další sloupce lze přidat později. Většina tabulek je vzájemně propojena primárními a cizími klíči, což zajišťuje „referenční integritu“ mezi objekty. Hlavními dodavateli jsou ORACLE, SQL Server, MySQL, PostgreSQL atd.
Nerelační databáze: Koncept nerelačních databází přišel na scénu, aby zvládl rychlý růst nestrukturovaných dat a snadno je škáloval. To poskytuje flexibilní schéma, takže neexistuje nic takového, co se nazývá „referenční integrita“, jak vidíme v relačních databázích. Data jsou vysoce denormalizovaná a nevyžadují JOINy mezi objekty. To uvolňuje vlastnost ACID relačních databází a podporuje CAP (konzistence, dostupnost a dělení). Ale z těchto tří jsou v každém okamžiku zaručeny pouze dva. Takže na rozdíl od ACID bude podporovat pouze BASE (základně dostupný měkký stav, případná konzistence). Počáteční databáze vytvořené na základě těchto konceptů jsou BigTable od Googlu, HBase od Yahoo, Cassandra od Facebooku atd.
Kategorie nerelačních databází: Nerelační databáze lze rozdělit do čtyř hlavních kategorií, jako je databáze klíč–hodnota, databáze sloupců, databáze dokumentů a databáze grafů.
Databáze párů klíč–hodnota: Toto je nejjednodušší forma databáze NoSQL, kde je každá hodnota spojena s jedinečným klíčem. (ex Redis)
Sloupcová databáze: Tato databáze je schopna ukládat a zpracovávat velké množství dat pomocí ukazatele, který ukazuje na mnoho sloupců, které jsou distribuovány v clusteru. (ex HBase)
Databáze dokumentů: Tato databáze může obsahovat mnoho dokumentů párů klíč–hodnota s mnoha vnořenými úrovněmi. Tato databáze umožňuje efektivní dotazování. Dokumenty jsou uloženy ve formátu JSON. (ex MongoDB)
Databáze grafů: Místo tradičních řádků a sloupců používá tato databáze k reprezentaci grafových struktur a ukládání dat uzly a hrany. (ex Neo4J)