Junior
Kas yra NoSQL duomenų bazės?
sobes.tech AI
Atsakymas iš AI
NoSQL (Not Only SQL) — tai nerelacinių duomenų valdymo sistemų klasė, kurios naudoja struktūras, skirtingas nuo tradicinių lentelių su fiksuota schema. Jos skirtos dirbti su dideliais neorganizuotų, pusiauorganizuotų ir daugiaorganizuotų duomenų kiekiais, užtikrinant lankstų mastelio keitimą ir aukštą prieinamumą.
Pagrindinės NoSQL duomenų bazių kategorijos:
- "Raktas-reikšmė" (Key-Value Stores): Saugo duomenis poromis raktas-reikšmė, kur raktas unikalus identifikatorius reikšmei.
# Pavyzdys duomenų reprezentacijos key-value saugykloje user_data = { "user:123": {"name": "Alice", "age": 30}, "product:456": {"name": "Laptop", "price": 1200} } - "Stulpelinės" (Columnar Databases): Saugo duomenis pagal stulpelius, o ne eilutes. Optimizuotos analitinėms užklausoms ir didelių duomenų kiekių apdorojimui.
- "Dokumentų" (Document Databases): Saugo duomenis dokumentų formatu (pvz., JSON, BSON, XML). Duomenų schema yra lanksti.
// Dokumento pavyzdys document database { "_id": "prod_abc", "name": "Smartphone", "brand": "XYZ", "specs": { "display": "6.5 inch", "camera": "48MP" }, "tags": ["electronics", "mobile"] } - "Tinklų" (Graph Databases): Skirtos duomenų saugojimui ir apdorojimui, pateiktam kaip viršūnės (mazgai) ir briaunos (ryšiai). Naudojamos ryšių analizei.
Skirtumai nuo reliacinių DB (SQL):
| Savybė | Relacinė (SQL) | NoSQL |
|---|---|---|
| Duomenų schema | Fiksuota, griežta | Lanksti, dinamiška |
| Mastelio keitimas | Vertikalus (serverio pajėgumo didinimas) | Horizontalus (serverių pridėjimas) |
| Normalizacija | Aukšta (pasikartojančių duomenų mažinimas) | Žema (dublikuoti duomenis našumui) |
| ACID transakcijos | Paprastai visiškos | Skirtingos (kartais BASE) |
| Užklausų kalba | SQL | Skirtinga (dažnai API, specifiniai kalbos) |
NoSQL duomenų bazės pasirenkamos scenarijams, kuriems reikalingas aukštas mastelio keitimas, lanksti schema, greitas didelių duomenų apdorojimas (Big Data), darbui su pusiauorganizuotais/neorganizuotais duomenimis arba specifiniais duomenų modeliais (pvz., grafais).