NoSQL databázy – základná teória
NoSQL databázy sú databázy, ktoré nepoužívajú tradičný relačný model a SQL jazyk. Namiesto toho sa zameriavajú na ukladanie dát v neštruktúrovanom alebo pološtruktúrovanom formáte, ktorý umožňuje rýchlejší a flexibilnejší prístup k dátam.
Tu je niekoľko základných teoretických konceptov, ktoré by mohli pomôcť pochopiť NoSQL databázy:
ACID vs. BASE: Relačné databázy používajú koncept ACID (Atomicity, Consistency, Isolation, Durability) na zabezpečenie transakčnej bezpečnosti dát. NoSQL databázy používajú iný prístup nazývaný BASE (Basically Available, Soft-state, Eventually Consistent), ktorý umožňuje väčšiu flexibilitu v zmysle dostupnosti a konzistencie dát.
Key-value databázy: Tento typ NoSQL databázy ukladá dáta v podobe dvojíc kľúč-hodnota. Dáta sú obvykle rýchlo dostupné a môžu byť použité na ukladanie jednoduchých štruktúrovaných dát, ako sú napríklad zoznamy, zápisy v zozname alebo informácie o zákazníkoch.
Document databázy: Tento typ NoSQL databázy ukladá dáta v dokumentoch, ktoré sú obvykle v JSON alebo XML formáte. Dokumenty môžu obsahovať rôzne typy dát, od jednoduchých textových reťazcov až po zložitejšie štruktúry. Dokumenty sa obvykle ukladajú v kolekciách a môžu byť indexované pre rýchly prístup k dátam.
Column-family databázy: Tento typ NoSQL databázy ukladá dáta v tzv. rodinách stĺpcov. Každá rodina stĺpcov obsahuje stĺpce, ktoré môžu byť dynamicky pridávané alebo odstraňované. Dáta sú zvyčajne uložené v radoch, ktoré môžu byť ďalej rozdelené do podriadkov.
Graph databázy: Tento typ NoSQL databázy ukladá dáta v grafoch, kde vrcholy predstavujú entitky a hrany predstavujú vzťahy medzi týmito entitami. Grafové databázy sú často používané na ukladanie dát, ktoré majú veľa vzťahov, ako sú napríklad sociálne siete alebo siete dopravných spojení.
Sharding: Sharding je proces rozdeľovania dát na viacero fyzických serverov alebo strojov, ktoré sú následne spravované ako jedna logická databáza. Tento proces zvyčajne zabezpečuje lepšiu výkonnosť a škálovateľnosť systému, pretože dáta sú rovnomerne rozdelené medzi jednotlivé servery.
MapReduce: MapReduce je technika spracovania distribuovaných dát, ktorá bola vyvinutá pre NoSQL databázy. Táto technika umožňuje efektívne vykonávať operácie nad veľkým množstvom dát tým, že dáta sú rozdelené na menšie bloky, ktoré sú následne spracované paralelne na rôznych strojoch.
Eventual consistency: Eventual consistency je koncept, ktorý sa používa v NoSQL databázach, aby sa dosiahla konzistencia dát. Tento koncept priznáva, že dáta môžu byť dočasne nekonzistentné vzhľadom na časový odstup medzi rôznymi kópiami dát. Vzhľadom na asynchrónne replikovanie a rozdielne časy doručenia, dáta v replikách sa nemusia okamžite zhodovať. No v konečnom dôsledku, sa dáta dostanú do konsistentného stavu.
CAP teoréma: CAP teoréma je dôležitým teoretickým konceptom pre NoSQL databázy. Tento koncept hovorí, že pri navrhovaní distribuovaného systému sú tri hlavné vlastnosti, ktoré sa musia brať do úvahy: konzistencia (Consistency), dostupnosť (Availability) a tolerancia voči rozdeleniu siete (Partition Tolerance). Vzhľadom na obmedzenú šírku pásma siete, je potrebné správne zvoliť tieto vlastnosti. CAP teoréma tvrdí, že nie je možné splniť všetky tri vlastnosti naraz, ale je potrebné si vybrať len dve z troch.
Toto sú niektoré z najdôležitejších teoretických konceptov, ktoré sa týkajú NoSQL databáz. Samozrejme, existuje mnoho ďalších faktorov, ktoré treba zvážiť pri navrhovaní a používaní NoSQL databáz.
Typy NoSQL databáz:
NoSQL databázy sú veľmi rozmanité a zahrňujú mnoho rôznych typov databáz, ktoré sú navrhnuté na rôzne použitie a účely. Tu sú niektoré z najobľúbenejších a najčastejšie používaných typov NoSQL databáz:
Document-oriented databázy: MongoDB, Couchbase, CouchDB, RavenDB
Key-value databázy: Redis, Riak, DynamoDB, Memcached
Column-family databázy: Cassandra, HBase, Amazon SimpleDB
Graph databázy: Neo4j, OrientDB, ArangoDB, JanusGraph
Time-series databázy: InfluxDB, OpenTSDB, Graphite, KairosDB
Je dôležité poznamenať, že každá NoSQL databáza má svoje vlastné výhody a nevýhody a je navrhnutá pre špecifický typ aplikácií a úloh. Preto je dôležité preskúmať a zvážiť rôzne typy databáz pred rozhodnutím, ktorú databázu použiť v konkrétnom projekte.