Sobes.tech
Junior

Čo sú to NoSQL databázy?

sobes.tech AI

Odpoveď od AI

NoSQL (Not Only SQL) je trieda nerelácií systémov správy databáz, ktoré používajú štruktúry odlišné od tradičných tabuliek s pevnou schémou. Sú navrhnuté na prácu s veľkými objemami nestruktúrovaných, polostruktúrovaných a polystuktúrovaných dát, poskytujúc flexibilnú škálovateľnosť a vysokú dostupnosť.

Hlavné kategórie NoSQL databáz:

  • "Kľúč-hodnota" (Key-Value Stores): Ukladajú dáta v pároch kľúč-hodnota, kde kľúč jednoznačne identifikuje hodnotu.
    # Príklad reprezentácie dát v key-value store
    user_data = {
        "user:123": {"name": "Alice", "age": 30},
        "product:456": {"name": "Laptop", "price": 1200}
    }
    
  • "Stĺpcové" (Columnar Databases): Ukladajú dáta po stĺpcoch, nie po riadkoch. Optimalizované pre analytické dotazy a spracovanie veľkých objemov dát.
  • "Dokumentové" (Document Databases): Ukladajú dáta vo forme dokumentov (napr. JSON, BSON, XML). Schéma dát je flexibilná.
    // Príklad dokumentu v document database
    {
      "_id": "prod_abc",
      "name": "Smartphone",
      "brand": "XYZ",
      "specs": {
        "display": "6.5 inch",
        "camera": "48MP"
      },
      "tags": ["electronics", "mobile"]
    }
    
  • "Grafové" (Graph Databases): Určené na ukladanie a spracovanie dát prezentovaných vo forme vrcholov (uzlov) a hrán (väzieb). Používajú sa na analýzu vzťahov.

Rozdiely od relačných DB (SQL):

Charakteristika Relational (SQL) NoSQL
Schéma dát Fixná, prísna Flexibilná, dynamická
Škálovanie Vertikálne (zvýšenie výkonu servera) Horizontálne (pridanie serverov)
Normalizácia Vysoká (zníženie redundancie) Nízka (duplicitné dáta pre výkon)
ACID transakcie Zvyčajne úplná podpora Rôzna podpora (niekedy BASE)
Jazyk dotazov SQL Rôzne (často API, špecifické jazyky)

NoSQL databázy sa volia pre scenáre vyžadujúce vysokú škálovateľnosť, flexibilitu schémy, rýchlu spracovanie veľkých objemov dát (Big Data), prácu s polostruktúrovanými/neštruktúrovanými dátami alebo špecifické modely dát (napríklad grafy).