No SQL Adatbázisok Flashcards
Klasszikus adatbázis jellemzői
• Centralizált
• Relációs szerkezetű
• Kevés adat
NoSQL
• not SQL / not only SQL
• Több konkrét, hasonló alapelven (nem relációs felépítés) alapuló adatbázis
• Figyelembe veszi az új kihívásokat
NoSQL adatbázisok tulajdonságai
• Nem relációs szerkezetnek az adatok határozzák meg a felépítését
• Felhasználás-központú adatbázis tervezés
• Jó horizontális skálázhatóság
• Skálázható: erőforrásokat növelve a rendszer teljesítménye a hozzáadott erőforrásokkal arányosan javul
• Horizontális ->újabb gépek (szerverek) bevonhatósága
• Elosztott működésre tervezve
Elosztott tárolás típusai
• Replikáció
• Sharding
Van olyan adatbázis, mely mindkettőt tudja.
Replikáció
Ugyanazok az adatok több példányban tárolódnak a szerverek adattartalma azonos.
Célja:
• Biztonság -> adatvesztés elkerülése
• Terhelés megosztás
Sharding
Az adatok egy példányban tárolódnak, de több szerveren a szerverek adattartalma különböző (hacsak nem kombinálják replikációval).
Célja:
• Terhelés megosztás
• Szerver kiszolgálás
CAP tétel
Egy elosztott rendszer a három alapvető képesség közül (konzisztencia, rendelkezésre állás, particionálás tűrés) legfeljebb kettőt tud megvalósítani.
Konzisztencia (CAP)
Adott időpillanatban bármely csomópontról való olvasás ugyanazt a (legfrissebb) értéket adja, vagy hibát.
Nem ugyanaz, mint a relációs adatbázisok konzisztenciája!
Rendelkezésre állás(CAP)
Az adatok (minimális késleltetéssel) folyamatosan elérhetőek, azaz minden kérésre érkezik válasz arról, hogy a kérés végrehajtása sikeres vagy sikertelen volt-e
Master szerver (ír- olvasási kérés) – slave server (írást nem szolgál ki). Ha kiesik a master, slavek megszavazzák ki lesz a master.
Konzisztenciát ez nem garantál!
Partíció tolerancia(CAP)
A rendszer akkor is működőképes marad (a kliensek kéréseire választ ad), ha a csomópontok között tetszőleges számú üzenet elvész.
A hiba megszűnése után tudni kell szinkronizálni!
Minden elosztott rendszernél előfordulhat hálózatkiesés, tehát ez szükséges tulajdonság!
Lehetőségek
• Elhagyni a partícionális tűrést -> átrakni mindent egy gépre
• Elhagyni a rendelkezésre állást -> várakozás, amíg a konzisztencia helyreáll
• Elhagyni a konzisztenciát -> rendelkezésre állás fontosabb mint az adat konzisztencia
Kulcs-érték tárolók tulajdonságai
• (K,V) párok együttese, ahol K kulcs, V pedig egy érték
• Legegyszerűbb típus
• Kulcs-érték párokat tárol
• Lényegében egy asszociatív tömb
• Adattípusok rugalmas kezelése
• Jellemzően kulcs szerinti lekérdezése
Oszlopcsaládok
Az értékeket mint map-of-maps-of-maps modellezi, oszlopcsaládok, oszlopok és időbélyeggel ellátott verziók segítségével.
Sorok felépítése:
➢ Kulcs + oszlop (oszlopnév – érték - időbélyeg)
➢ oszlopnév – érték – időbélyeg : tárolás alapeleme ➢ Rugalmas szerkezet
Verzió adat
Egy adat beazonosításához szükséges: Táblanév, sor azonosítója, oszlopcsalád és benne az oszlop neve és az időbélyeg
Gráf adatbázisok
Adatok tárolása csomópontok és irányított élek formájában.
Adatelemek közötti összefüggések egyszerű modellezése
Csomópont, kapcsolat tulajdonságai kulcs-érték párok
Dokumentumtárolók
A dokumentumok önleíróak, hierarchikus szerkezetűek, kollekciókat és skalár értékeket tartalmazhatnak.
Kulcs + komplex struktúra
A sémák tetszőleges bonyolultságúak lehetnek, adatbázis által kezelt indexek is megjelennek.
JSON, BSON vagy XML formátum
Erős konzisztencia
Miután a módosítás végrehajtódott, minden (akár A, akár B, akár C által végzett) hozzáférés a módosított értéket adja eredményül.
Gyenge konzisztencia
A rendszer nem garantálja, hogy a későbbi hozzáférések a módosított értéket adják eredményül. Több feltételnek is teljesülnie kell, mielőtt az érték visszaadásra kerül. A módosítás megtörténte és azon pillanat közötti időszakot, amelyre már garantált, hogy minden megfigyelő mindig a módosított értéket látja, inkonzisztencia ablaknak (inconsistency window) nevezzük
NoSQL adatmodellek
- NoSQL
- Kulcs-érték
- Rendezett kulcs-érték
- Gráf
- Oszlopcsalád
- Dokumentumtároló