Toggle menu
Toggle preferences menu
Toggle personal menu
Neprihlásený/á
Your IP address will be publicly visible if you make any edits.
Verzia z 10:03, 13. január 2025, ktorú vytvoril SKevo (diskusia | príspevky) (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…“)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)

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;