NoSQL je typ systému správy databáz (DBMS), ktorý je navrhnutý na spracovanie a ukladanie veľkých objemov neštruktúrovaných a pološtruktúrovaných údajov. Na rozdiel od tradičných relačných databáz, ktoré na ukladanie údajov používajú tabuľky s preddefinovanými schémami, databázy NoSQL používajú flexibilné dátové modely, ktoré sa dokážu prispôsobiť zmenám v dátových štruktúrach a sú schopné horizontálneho škálovania, aby zvládli rastúce množstvo údajov.
Termín NoSQL pôvodne označoval non-SQL alebo nerelačné databázy, no tento termín sa odvtedy vyvinul tak, aby neznamenal iba SQL, keďže databázy NoSQL sa rozšírili o širokú škálu rôznych databázových architektúr a dátových modelov.
NoSQL databázy sú vo všeobecnosti rozdelené do štyroch hlavných kategórií:
- Databázy dokumentov: Tieto databázy ukladajú údaje ako pološtruktúrované dokumenty, ako sú JSON alebo XML, a možno ich dopytovať pomocou jazykov orientovaných na dokumenty.
- Obchody s párom kľúč – hodnota: Tieto databázy ukladajú údaje ako páry kľúč-hodnota a sú optimalizované pre jednoduché a rýchle operácie čítania/zápisu.
- Rodinné predajne stĺpcov: Tieto databázy ukladajú údaje ako rodiny stĺpcov, čo sú množiny stĺpcov, s ktorými sa zaobchádza ako s jednou entitou. Sú optimalizované pre rýchle a efektívne dopytovanie veľkého množstva údajov.
- Databázy grafov: Tieto databázy ukladajú údaje ako uzly a hrany a sú navrhnuté tak, aby zvládali zložité vzťahy medzi údajmi.
NoSQL databázy sa často používajú v aplikáciách, kde je veľký objem údajov, ktoré je potrebné spracovať a analyzovať v reálnom čase, ako je napríklad analýza sociálnych médií, elektronický obchod a hranie hier. Môžu byť tiež použité pre iné aplikácie, ako sú systémy na správu obsahu, správu dokumentov a riadenie vzťahov so zákazníkmi.
NoSQL databázy však nemusia byť vhodné pre všetky aplikácie, pretože nemusia poskytovať rovnakú úroveň konzistencie údajov a transakčných záruk ako tradičné relačné databázy. Pri výbere systému správy databáz je dôležité starostlivo zhodnotiť špecifické potreby aplikácie.
NoSQL Pôvodne odkazujúci na ne SQL alebo nerelačné je databáza, ktorá poskytuje mechanizmus na ukladanie a získavanie údajov. Tieto údaje sú modelované inými prostriedkami, než sú tabuľkové vzťahy používané v relačných databázach. Takéto databázy vznikli koncom 60. rokov 20. storočia , ale prezývku NoSQL nezískal až do nárastu popularity na začiatku dvadsiateho prvého storočia. NoSQL databázy sa používajú v real-time webových aplikáciách a veľkých dátach a ich využitie časom narastá.
- Systémy NoSQL sa tiež niekedy nazývajú Nielen SQL, aby sa zdôraznila skutočnosť, že môžu podporovať dopytovacie jazyky podobné SQL. NoSQL databáza zahŕňa jednoduchosť dizajnu, jednoduchšie horizontálne škálovanie na klastre strojov, má a jemnejšiu kontrolu nad dostupnosťou. Dátové štruktúry používané databázami NoSQL sa líšia od štruktúr používaných štandardne v relačných databázach, čo urýchľuje niektoré operácie v NoSQL. Vhodnosť danej NoSQL databázy závisí od problému, ktorý by mala riešiť.
- NoSQL databázy, známe aj ako nielen SQL databázy, sú novým typom systému správy databáz, ktorý má , získal v posledných rokoch popularitu. Na rozdiel od tradičných relačných databáz sú databázy NoSQL navrhnuté na spracovanie veľkého množstva neštruktúrovaných alebo pološtruktúrovaných údajov a môžu sa prispôsobiť dynamickým zmenám v dátovom modeli. Vďaka tomu sú databázy NoSQL vhodné pre moderné webové aplikácie, analýzy v reálnom čase a spracovanie veľkých dát.
- Dátové štruktúry používané NoSQL databázami sa niekedy tiež považujú za flexibilnejšie ako tabuľky relačných databáz. Mnoho obchodov NoSQL ohrozuje konzistenciu v prospech dostupnosti, rýchlosti, , a tolerancia rozdelenia. Prekážky väčšieho prijatia NoSQL obchodov zahŕňajú používanie nízkoúrovňových dopytovacích jazykov, nedostatok štandardizovaných rozhraní a obrovské predchádzajúce investície do existujúcich relačných databáz.
- Vo väčšine obchodov NoSQL chýbajú skutočné transakcie ACID (Atomicita, Konzistencia, Izolácia, Trvanlivosť), ale niekoľko databáz, ako napríklad MarkLogic, Aerospike, FairCom c-treeACE, Google Spanner (hoci technicky databáza NewSQL), Symas LMDB a OrientDB ich vytvorilo. stredobodom ich dizajnu.
- Väčšina databáz NoSQL ponúka koncepciu prípadnej konzistencie, v ktorej sa zmeny databázy šíria do všetkých uzlov, takže dopyty na údaje nemusia okamžite vrátiť aktualizované údaje alebo môžu viesť k načítaniu údajov, ktoré nie sú presné, čo je problém známy ako zastarané čítania. tiež má niektoré systémy NoSQL môžu vykazovať stratu zápisov a iné formy straty údajov. Niektoré systémy NoSQL poskytujú koncepty, ako je zapisovanie vopred, aby sa predišlo strate údajov.
- Jedným jednoduchým príkladom databázy NoSQL je databáza dokumentov. V databáze dokumentov sú údaje uložené v dokumentoch a nie v tabuľkách. Každý dokument môže obsahovať inú množinu polí, čo uľahčuje prispôsobenie meniacim sa požiadavkám na údaje
- Napríklad, vezmite si napríklad databázu, ktorá obsahuje údaje týkajúce sa zamestnancov. V relačnej databáze môžu byť tieto informácie uložené v tabuľkách s jednou tabuľkou pre informácie o zamestnancoch a ďalšou tabuľkou pre informácie o oddelení. V databáze dokumentov by bol každý zamestnanec uložený ako samostatný dokument so všetkými jeho informáciami obsiahnutými v dokumente.
- NoSQL databázy sú relatívne novým typom systému správy databáz, ktorý má a si v posledných rokoch získali popularitu vďaka svojej škálovateľnosti a flexibilite. Sú navrhnuté tak, aby zvládli veľké množstvo neštruktúrovaných alebo pološtruktúrovaných údajov a dokážu zvládnuť dynamické zmeny dátového modelu. Vďaka tomu sú databázy NoSQL vhodné pre moderné webové aplikácie, analýzy v reálnom čase a spracovanie veľkých dát.
Kľúčové vlastnosti NoSQL:
- Dynamická schéma: Databázy NoSQL nemajú pevnú schému a môžu sa prispôsobiť meniacim sa štruktúram údajov bez potreby migrácií alebo zmien schém.
- Horizontálna škálovateľnosť: Databázy NoSQL sú navrhnuté tak, aby sa škálovali pridaním ďalších uzlov do databázového klastra, vďaka čomu sú vhodné na spracovanie veľkého množstva údajov a vysokej úrovne prevádzky.
- Na základe dokumentov: Niektoré databázy NoSQL, ako napríklad MongoDB, používajú dátový model založený na dokumentoch, kde sú údaje uložené v pološtruktúrovanom formáte bez schémy, ako napríklad JSON alebo BSON.
- Na základe párov kľúč – hodnota: Iné databázy NoSQL, ako napríklad Redis, používajú dátový model kľúč – hodnota, kde sú údaje uložené ako kolekcia párov kľúč – hodnota.
- Na základe stĺpcov: Niektoré databázy NoSQL, ako napríklad Cassandra, používajú údajový model založený na stĺpcoch, kde sú údaje usporiadané do stĺpcov namiesto riadkov.
- Distribuované a vysoká dostupnosť: NoSQL databázy sú často navrhnuté tak, aby boli vysoko dostupné a aby automaticky riešili zlyhania uzlov a replikáciu údajov naprieč viacerými uzlami v databázovom klastri.
- Flexibilita: Databázy NoSQL umožňujú vývojárom ukladať a získavať údaje flexibilným a dynamickým spôsobom s podporou viacerých typov údajov a meniacich sa štruktúr údajov.
- Výkon: Databázy NoSQL sú optimalizované pre vysoký výkon a dokážu zvládnuť veľké množstvo čítaní a zápisov, vďaka čomu sú vhodné pre veľké dáta a aplikácie v reálnom čase.
Výhody NoSQL: Existuje mnoho výhod práce s databázami NoSQL, ako sú MongoDB a Cassandra. Hlavnými výhodami sú vysoká škálovateľnosť a vysoká dostupnosť.
- Vysoká škálovateľnosť: NoSQL databázy používajú sharding na horizontálne škálovanie. Rozdelenie dát a ich umiestnenie na viacero počítačov tak, aby sa zachovalo poradie dát, je sharding. Vertikálne škálovanie znamená pridanie ďalších zdrojov k existujúcemu stroju, zatiaľ čo horizontálne škálovanie znamená pridanie ďalších strojov na spracovanie údajov. Vertikálne škálovanie nie je také ľahké implementovať, ale horizontálne škálovanie je ľahké. Príklady databáz s horizontálnym škálovaním sú MongoDB, Cassandra atď. NoSQL dokáže spracovať obrovské množstvo údajov vďaka škálovateľnosti, keďže údaje rastú, škálovanie NoSQL Auto aby s týmito údajmi narábala efektívnym spôsobom.
- Flexibilita: NoSQL databázy sú navrhnuté tak, aby spracovávali neštruktúrované alebo pološtruktúrované údaje, čo znamená, že dokážu prispôsobiť dynamickým zmenám dátového modelu. Vďaka tomu sú databázy NoSQL vhodné pre aplikácie, ktoré potrebujú zvládnuť meniace sa požiadavky na údaje.
- Vysoká dostupnosť: Auto , Funkcia replikácie v databázach NoSQL ho robí vysoko dostupným, pretože v prípade akéhokoľvek zlyhania sa dáta replikujú do predchádzajúceho konzistentného stavu.
- Škálovateľnosť: Databázy NoSQL sú vysoko škálovateľné, čo znamená, že dokážu ľahko spracovať veľké množstvo údajov a prevádzky. Vďaka tomu sú vhodné pre aplikácie, ktoré potrebujú spracovať veľké množstvo dát alebo prenosu
- Výkon: NoSQL databázy sú navrhnuté tak, aby zvládali veľké množstvo údajov a prevádzky, čo znamená, že môžu ponúknuť lepší výkon v porovnaní s tradičnými relačnými databázami.
- Efektivita nákladov: NoSQL databázy sú často nákladovo efektívnejšie ako tradičné relačné databázy, pretože sú zvyčajne menej zložité a nevyžadujú drahý hardvér ani softvér.
- Agility: Ideálne pre agilný vývoj.
Nevýhody NoSQL: NoSQL má nasledujúce nevýhody.
- Nedostatok štandardizácie: Existuje mnoho rôznych typov databáz NoSQL, z ktorých každá má svoje vlastné jedinečné silné a slabé stránky. Tento nedostatok štandardizácie môže sťažiť výber správnej databázy pre konkrétnu aplikáciu
- Nedostatok súladu s ACID: NoSQL databázy nie sú plne kompatibilné s ACID, čo znamená, že nezaručujú konzistenciu, integritu a trvanlivosť údajov. To môže byť nevýhodou pre aplikácie, ktoré vyžadujú silné záruky konzistentnosti údajov.
- Úzke zameranie: NoSQL databázy majú veľmi úzke zameranie, pretože sú určené hlavne na ukladanie, ale poskytujú len veľmi málo funkcií. Relačné databázy sú v oblasti Transaction Managementu lepšou voľbou ako NoSQL.
- Open-source: NoSQL je databázy open-source databáza. Zatiaľ neexistuje žiadny spoľahlivý štandard pre NoSQL. Inými slovami, dva databázové systémy budú pravdepodobne nerovnaké.
- Nedostatok podpory pre zložité otázky: Databázy NoSQL nie sú navrhnuté na spracovanie zložitých dotazov, čo znamená, že nie sú vhodné pre aplikácie, ktoré vyžadujú komplexnú analýzu údajov alebo zostavovanie správ.
- Nedostatok zrelosti: NoSQL databázy sú relatívne nové a chýbajú im vyspelosť tradičných relačných databáz. To môže spôsobiť, že budú menej spoľahlivé a menej bezpečné ako tradičné databázy.
- Manažérska výzva: Účelom veľkých dátových nástrojov je maximálne zjednodušiť správu veľkého množstva dát. Ale nie je to také jednoduché. Správa dát v NoSQL je oveľa zložitejšia ako v relačnej databáze. Najmä NoSQL má povesť náročného na inštaláciu a ešte hektickejšiu každodennú správu.
- GUI nie je k dispozícii: Nástroje režimu GUI na prístup k databáze nie sú na trhu flexibilne dostupné.
- Záloha: Zálohovanie je veľkým slabým miestom pre niektoré databázy NoSQL, ako je MongoDB. MongoDB nemá žiadny prístup k zálohovaniu údajov konzistentným spôsobom.
- Veľký formát dokumentu: Niektoré databázové systémy ako MongoDB a CouchDB ukladajú údaje vo formáte JSON. To znamená, že dokumenty sú dosť veľké (BigData, šírka pásma siete, rýchlosť) a popisné názvy kľúčov v skutočnosti škodia, pretože zväčšujú veľkosť dokumentu.
Typy NoSQL databázy: Typy NoSQL databáz a názov databázového systému, ktorý patrí do tejto kategórie, sú:
- Databázy grafov : Príklady – Amazon Neptune, Neo4j
- Sklad kľúčovej hodnoty: Príklady – Memcached, Redis, Coherence
- Stĺpec: Príklady – Hbase, Big Table, Accumulo
- Na základe dokumentov: Príklady – MongoDB, CouchDB, Cloudant
Kedy by sa malo použiť NoSQL:
java switch int
- Keď je potrebné uložiť a získať veľké množstvo údajov.
- Vzťah medzi údajmi, ktoré ukladáte, nie je taký dôležitý
- Údaje sa časom menia a nie sú štruktúrované.
- Podpora obmedzení a spojení sa nevyžaduje na úrovni databázy
- Údaje neustále rastú a na spracovanie údajov musíte databázu pravidelne škálovať.
Na záver, databázy NoSQL ponúkajú oproti tradičným relačným databázam niekoľko výhod, ako je škálovateľnosť, flexibilita a nákladová efektívnosť. Majú však aj niekoľko nevýhod, ako je nedostatočná štandardizácia, nedostatočná zhoda s ACID a nedostatočná podpora pre zložité otázky. Pri výbere databázy pre konkrétnu aplikáciu je dôležité starostlivo zvážiť výhody a nevýhody, aby sa určila najvhodnejšia databáza.