More actions
Vytvorená stránka „Typy NoSQL databáz, CAP teoréma. {{Pojmová mapa}} == Typy NoSQL databáz == NoSQL databázy sú navrhnuté na spracovanie veľkých objemov neštruktúrovaných alebo pološtruktúrovaných dát, ktoré tradičné relačné databázy nemusia zvládnuť efektívne. === Databázy typu kľúč-hodnota (''Key-Value Databases'') === Dáta sú uložené vo forme párov <code>kľúč : hodnota</code>. Tento typ sa používa napríklad pri vyrovnávacej pamäti (cach…“ |
Bez shrnutí editace |
||
Riadok 150: | Riadok 150: | ||
!'''Príklady''' | !'''Príklady''' | ||
|- | |- | ||
|Kľúč-hodnota | |[[NoSQL databázy#Databázy typu kľúč-hodnota (Key-Value Databases)|Kľúč-hodnota]] | ||
|Jednoduché páry kľúč-hodnota. | |Jednoduché páry kľúč-hodnota. | ||
|Redis, DynamoDB | |Redis, DynamoDB | ||
|- | |- | ||
|Dokumentové | |[[NoSQL databázy#Dokumentové databázy (Document-Oriented Databases)|Dokumentové]] | ||
|Flexibilné ukladanie dokumentov. | |Flexibilné ukladanie dokumentov. | ||
|MongoDB, Couchbase | |MongoDB, Couchbase | ||
|- | |- | ||
|Stĺpcové | |[[NoSQL databázy#Stĺpcové databázy (Column-Family Databases)|Stĺpcové]] | ||
|Dátové úložisko optimalizované na čítanie. | |Dátové úložisko optimalizované na čítanie. | ||
|Cassandra, HBase | |Cassandra, HBase | ||
|- | |- | ||
|Grafové | |[[NoSQL databázy#Grafové databázy|Grafové]] | ||
|Ukladanie a analýza vzťahov medzi entitami. | |Ukladanie a analýza vzťahov medzi entitami. | ||
|Neo4j, Amazon Neptune | |Neo4j, Amazon Neptune |
Aktuálna revízia z 10:04, 13. január 2025
Typy NoSQL databáz, CAP teoréma.
Typy NoSQL databáz
NoSQL databázy sú navrhnuté na spracovanie veľkých objemov neštruktúrovaných alebo pološtruktúrovaných dát, ktoré tradičné relačné databázy nemusia zvládnuť efektívne.
Databázy typu kľúč-hodnota (Key-Value Databases)
Dáta sú uložené vo forme párov kľúč : hodnota
. Tento typ sa používa napríklad pri vyrovnávacej pamäti (cache), pre správu a ukladanie relácií používateľov a podobne.
Charakteristiky:
- Jednoduchý dátový model.
- Rýchly prístup pomocou jedinečného kľúča.
- Hodnoty môžu byť jednoduché (reťazce, čísla) alebo zložité (JSON, binárne objekty).
Napríklad:
- Redis: In-memory (v pamäti RAM) databáza, s podporou perzistencie (trvalého uloženia na disk).
- Napríklad:
SET "user:1001" '{"meno": "Jana", "vek": 25}' GET "user:1001"
- Napríklad:
- Amazon DynamoDB: Škálovateľná a distribuovaná key-value databáza.
Dokumentové databázy (Document-Oriented Databases)
Dáta sú uložené vo forme dokumentov (zvyčajne JSON, BSON alebo XML).
Používajú sa pri aplikáciách s dynamickými a často meniacimi sa schémami, napríklad: e-commerce, CMS (Content Management System: WordPress a podobne).
Charakteristiky:
- Dokumenty obsahujú polia a hodnoty, podobne ako objekty v programovaní;
- Flexibilná štruktúra (každé pole nemusí byť rovnaké pre všetky dokumenty);
Napríklad:
- MongoDB: Populárna dokumentová databáza s podporou replikácie a "shardovania";
- Napríklad:
db.users.insertOne({ meno: "Peter", vek: 30, adresa: { mesto: "Bratislava", ulica: "Hlavná 5" } })
- Napríklad:
- Couchbase: Kombinuje dokumentové a key-value úložisko;
Stĺpcové databázy (Column-Family Databases)
Dáta sú uložené ako riadky, pričom každý riadok môže obsahovať rôzny počet stĺpcov, ktoré sú organizované do rodín (column families).
Používajú sa pri analytike, logovaní, v odporúčacích systémoch a tak ďalej...
Charakteristiky:
- Efektívne ukladanie a vyhľadávanie veľkých dát;
- Škálovanie na veľké objemy dát a geograficky distribuované systémy;
Napríklad:
- Apache Cassandra: Distribuovaná stĺpcová databáza odolná voči výpadkom;
- Napríklad:
CREATE TABLE pouzivatel ( pouzivatel_id UUID PRIMARY KEY, meno TEXT, email TEXT ); INSERT INTO pouzivatel (pouzivatel_id, meno, email) VALUES (uuid(), 'Jana', '[email protected]');
- Napríklad:
- Apache HBase: Beží na Hadoop HDFS a je navrhnutá na veľké objemy dát;
Grafové databázy
Dáta sú uložené vo forme uzlov (nodes) a hrán (edges), ktoré reprezentujú vzťahy medzi entitami (napríklad, pojmová mapa na vrchu tejto stránky je grafovou databázou). Používajú sa najmä pri sociálnych sieťach, analýze grafov alebo odporúčacích systémoch (napríklad: YouTube algoritmus, ktorý odporúča videá).
Charakteristiky:
- Navrhnuté na prácu s komplexnými vzťahmi.
- Každý uzol a hrana môžu mať vlastnosti (atribúty).
Napríklad:
- Neo4j: Najpopulárnejšia grafová databáza, používa jazyk Cypher pre definíciu a dopytovanie grafov;
- Napríklad:
CREATE (a:Person {name: "Jana", age: 25}) CREATE (b:Person {name: "Peter", age: 30}) CREATE (a)-[:FRIEND]->(b)
- Poznámka: Poznámkovač používa JavaScript knižnicu
vis-network
.
- Napríklad:
- Amazon Neptune: Plne spravovaná (managed) grafová databáza;
CAP Teoréma
CAP teoréma (Consistency, Availability, Partition Tolerance) vysvetľuje, že distribuovaný systém nemôže súčasne zaručiť všetky 3 vlastnosti:
- Konzistencia (Consistency):
- Každý klient vidí rovnaké dáta v rovnakom čase;
- Ak je vykonaná zmena, všetky uzly musia byť okamžite aktualizované;
- Príklad: Bankový systém, kde je kritická konzistencia zostatkov;
- Dostupnosť (Availability):
- Každý klient dostane odpoveď na svoju požiadavku, aj keď niektoré uzly zlyhajú;
- Odpovede však nemusia byť vždy aktuálne;
- Príklad: Cache systém, kde rýchla odpoveď má prednosť pred konzistenciou;
- Odolnosť voči rozdeleniu (Partition Tolerance):
- Systém musí správne fungovať aj v prípade, že dôjde k výpadku spojenia medzi časťami systému;
- Príklad: Globálne distribuovaná databáza s uzlami na viacerých kontinentoch;
CAP trojuholník
Distribuovaný systém môže poskytovať naraz iba dve z troch vlastností:
CAP Vlastnosti | Popis |
---|---|
CP (Consistency + Partition Tolerance) | Zaručuje konzistenciu, ale nemusí byť vždy dostupný. |
AP (Availability + Partition Tolerance) | Zaručuje dostupnosť, ale konzistencia môže byť slabá. |
CA (Consistency + Availability) | Nie je možné zabezpečiť, ak sa očakáva odolnosť voči rozdeleniu. |
Podpora CAP v NoSQL databázach
Databáza | CAP Model |
---|---|
Redis | CP (konzistentná a odolná voči rozdeleniu). |
MongoDB | AP (dostupná a odolná voči rozdeleniu). |
Apache Cassandra | AP (dostupná a odolná voči rozdeleniu). |
Neo4j | CP (konzistentná a odolná voči rozdeleniu). |
Zhrnutie
Typy NoSQL databáz
Typ | Charakteristika | Príklady |
---|---|---|
Kľúč-hodnota | Jednoduché páry kľúč-hodnota. | Redis, DynamoDB |
Dokumentové | Flexibilné ukladanie dokumentov. | MongoDB, Couchbase |
Stĺpcové | Dátové úložisko optimalizované na čítanie. | Cassandra, HBase |
Grafové | Ukladanie a analýza vzťahov medzi entitami. | Neo4j, Amazon Neptune |
CAP Teoréma
- Distribuovaný systém môže zaručiť naraz iba 2 vlastnosti z 3:
- Konzistencia (Consistency);
- Dostupnosť (Availability);
- Odolnosť voči rozdeleniu (Partition Tolerance);
- Výber závisí od potrieb aplikácie, napríklad: konzistencia pre bankovníctvo, dostupnosť pre sociálne siete;