Toggle menu
Toggle preferences menu
Toggle personal menu
Neprihlásený/á
Your IP address will be publicly visible if you make any edits.
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"
      
  • 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" }
      })
      
  • 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]');
      
  • 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.
  • 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:

  1. 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;
  2. 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;
  3. 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;