4. tétel Flashcards
(13 cards)
A redundancia problémája
Redundancia: többszörös felesleges adattárolás. A redundáns információ felesleges helyfoglalást és anomáliákat (beszúrási, törlési, módosítási) okozhat.
Adatbázis konzisztencia: az adatbázis csak valós adatokat tartalmazhat. A redundancia adat inkonzisztenciát okozhat. Az anomáliák inkonzisztens adatbázis állapothoz vezethetnek.
Anomáliák típusai
- Beszúrási anomália: akkor következik be, ha bizonyos attribútumokat nem tudunk beilleszteni az adatbázisba más attribútumok hiányában.
Példa reláció: DOLGOZO_PROJEKT(Szsz, Pszám, Órák, Dnév, Pnév, Phelyszín) Nem tudunk projektet felvenni, ha nem rendelünk hozzá egy alkalmazottat. - Módosítási anomália: Akkor fordulhat elő, ha a módosítás során minden logikailag hozzá kapcsolódó tábla /
rekord nem kerül módosításra.
Példa reláció: DOLGOZO_PROJEKT(Szsz, Pszám, Órák, Dnév, Pnév, Phelyszín)
Amennyiben az 1-es projekt helyszínét megváltoztatjuk, akkor ezt a módosítást minden 1-es projekten dolgozó alkalmazott esetében el kell végezni. - Törlési anomália: bizonyos adatok (rekordok) törlése olyan adatok elvesztését eredményezi, melyet nem szerettünk volna törölni.
Példa reláció: DOLGOZO_PROJEKT(Szsz, Pszám, Órák, Dnév, Pnév, Phelyszín)
Amikor egy projektet törlünk, az eredményezi az összes alkalmazott törlését is, aki az adott projekten dolgozik.
Funkcionális függőségek típusai
Olyan függőség amely során B funkcionálisan függ A-tól (A->B).
Viszont B->A nem feltétlenül igaz. Példa.: Személyi szám -> {személy neve, cime…}
- Teljes funkcionális függőség: Amikor A,B->C, de se A->C nem igaz, se B->C nem igaz.
-Részleges funkcionális függőség: egy Egy relációban egy attribútum (B) részlegesen függ egy összetett kulcstól (A, C), ha az attribútum értéke kizárólag az összetett kulcs egy részétől (A vagy C) függ, nem pedig az egész kulcstól (A, C)
-Tranzitív funkcionális függőség: az A → C funkcionális függőség tranzitív, ha A → B és B → C is teljesül.
Normalizáció
- Relációs adatbázisoknak egyfajta tervezési folyamata
- A normalizáció során a kritériumoknak nem eleget tevő relációkat alakítjuk át úgy hogy eleget tegyenek a normálforma kritériumainak.
- Szekvenciális lépések sorozata.
Normálformák
Kulcsokat és funkcionális függőségeket alkalmazó szabályok, melyek segítségével meghatározható, hogy a relációs séma milyen normálformában van. Egy reláció normálformája az a legmagasabb normálforma, melynek feltételeit kielégíti.
Típusai:
0. NF:
- Olyan állapota a táblának amikor már táblázatba van az adat foglalva, de még az
attribútumok ismétlődőek lehetnek(pl.: Vezetéknév, Keresztnév, Teljes Név)
1.NF:
- Teljesíti a 0.Normál formát
- Elsődleges kulcsokat megkeressük(pl.: Személy igazolvány szám megkeresése, és más
egyéb elsődleges kulcsok megkeresése)
- Ekkor már nem lehet összetett attribútum pl.: A teljes nevet fel kell bontani vezeték és
keresztnévre.(elemi attribútumokra)
- Nem lehet többértékű attribútum, pl.: Könyv esetén lehet több szerző, de nem lehet
mindegyik egy mezőben Szerző -> (Kiss Béla, Molnár Kata) nem lehet.
2.NF:
- Teljesíti a 1.Normál formát
- A részleges funkcionális függőségeknek el kell tűnniük, vagy is a nem elsődleges
attribútumok teljes funkcionális függőségben kell, hogy legyenek.
- Dekompozíciós eljárás. -> Dekomponálás: részekre szétszedés (táblázatok részekre
szedése)
3.NF:
- Teljesíti a 2.Normál formát
- A tranzitív függőségeknek el kell tűnniük.
- Példa: Szigszám -> osztály kód -> osztály név (ezeknek a megszüntetése)
Tábla1 (Szigszám, osztálykód) Tábla2 (osztálykód, osztálynév)
Boyce-Codd normál forma(4. És 5. Normálforma nem lesz):
- Példa: Tenniszes példa a diasorból
- Egy X → A funkcionális függőség csak akkor megengedett, ha X szuperkulcs. Szuperkulcs egy olyan attribútum vagy attribútumok halmaza, amely egyértelműen azonosít egy rekordot egy táblában.
A hagyományos RDBMS rendszerek tulajdonságai
- Kényelmes a használata
o Egyszerű az adatmodell
o Deklaratív lekérdező nyelv (SQL)
o Tranzakciókezelés (többfelhasználós támogatás) - Biztonságosak (pl.: felhasználói jogosultságrendszer)
- Tartós adattárolást biztosítanak
- Az emberek manapság sokkal több adatot tárolnak / kezelnek, mint amennyire a hagyományos DBMS rendszerek ki lettek fejlesztve.
- Struktúrált
- Fontos a konzisztencia
NoSQL rendszerek tulajdonságai
- Jellemzően nem relációs adatmodell
- Horizontális skálázhatóság ( tetszőleges attribútumokat fel lehet venni, nem köti a
relációs struktúra ) - Általában nyílt forráskód
- Elosztott működés: több szerver tárolja az adatot
- Séma mentes: nincsenek megkötve fixen az attribútumok ezért szabadon adhatunk meg
új vagy nem sémához illeszkedőeket. - Duplikált / redundáns adatok gyakran előfordulhatnak
- Könnyen kezelhető API-k vannak hozzá a gyors adattárolás érdekében
- Fokozottan konzisztens (fokozott konzisztencia, nem erősebb), az az időközönként az
elosztott rendszerek elkérik a másik szerverek változását így ők is tudni fognak róla.
ACID elvek
- Atomosság (Atomicity): vagy teljesen végrehajtjuk a tranzakciót, vagy egyáltalán nem.
- Konzisztencia megőrzés (Consistency preservation): a tranzakció végrehajtása után is teljesüljenek az adatbázisban előírt konzisztencia megszorítások.
- Elkülönítés (Isolation): minden tranzakciónak látszólag úgy kell lefutnia, mintha ezalatt az idő alatt semmilyen másik tranzakciót sem hajtanánk végre.
- Tartósság (Durability): az a feltétel, hogy ha egyszer egy tranzakció befejeződött, akkor már soha többé nem veszhet el a tranzakciónak az adatbázison kifejtett hatása.
CAP tétel
Az elosztott rendszerekkel szemben megfogalmazott követelmények:
* Konzisztencia (Consistency): egy elosztott rendszer akkor konzisztens, ha bármely csomópontjából bármely időpontban ugyanazon információt kapja vissza a kliens.
* Rendelkezésre állás (Availablity): egy elosztott rendszer rendelkezésre áll, ha minden működő csomóponthoz érkező kérésre nem hibaüzenettel válaszol, tehát a csomópontokon futtatott algoritmusoknak véges idő alatt be kell fejeződniük.
* Partíció tolerancia (Partition tolerance): akkor is helyesen működik, ha a partíciók között tetszőleges számú üzenet elveszik, vagy ha egy partíció meghibásodik.
CAP tétel: elosztott rendszerben nem garantálható mindhárom CAP tulajdonság.
Skálázhatóság
A rendszer erőforrásait növelve a rendszer teljesítménye is arányosan növekszik. Nő az egyszerre feldolgozható lekérdezések száma, a feldolgozott adatok mennyisége és a késleltetés. Vertikális skálázhatóság: a rendszert erőforrással (pl.: CPU) bővítjük.
Horizontális skálázhatóság: a rendszert új gépekkel bővítjük. Sok olcsó gépből nagy teljesítmény érhető el. Bonyolult szoftvert igényel, elosztottsága miatt többféle meghibásodás is felléphet. A legtöbb NoSQL rendszer ezt támogatja.
Konzisztenciamodellek
- Gyenge konzisztencia: a rendszer nem garantálja, hogy az írást követő olvasások a legutoljára beírt adatot érik el.
- Fokozatos konzisztencia: a gyenge konzisztencia egy fajtája. A rendszer garantálja, hogy ha nincsenek további frissítések, előbb-utóbb minden olvasás a legutóbbi írás értékét éri el.
- Erős konzisztencia: minden olvasás művelet az adategységen legutóbb befejezett írás művelet eredményével tér vissza, függetlenül attól, hogy az adategységet melyik csomóponton éri el. Megvalósításához egy adott adategység összes műveletét egy csomóponton kell végrehajtani, vagy megfelelő elosztott protokollt kell használni.
- Erős konzisztencia több adategységen: tranzakciókezeléssel biztosítható, elosztott környezetben megvalósítása költséges.
A NoSQL rendszerek fő típusai
Előnyök: Flexibilis séma, masszív skálázhatóság, elosztott számítás
Hátrányok:
* Nincs deklarálva a lekérdező nyelv
* Laza konzisztencia: aszinkron beszúrások és frissítések / Gyenge tranzakció
* Nincsenek ACID tranzakciók:
* Nincs group by, join
Tipusok:
* Kulcs-érték tárolók: séma nélküli adatok tárolására fejlesztették ki. Olyan objektumokat tartalmaz (érték), amelyek egyedi kulcs által vannak azonosítva.
* Oszlopcsaládok: egy hierarchikus (nem relációs) adatmodell szerint, logikailag oszlopalapon szervezik az adatokat. Kulcs-érték párok, ahol a kulcs az attribútum neve, az érték pedig az attribútum értéke. A szuperoszlopcsalád egy újabb kulcs-érték pár szinttel bővíti felfelé az oszlopcsaládok szintjét.
* Dokumentum tárolók: hasonló a kulcs-érték tárolókhoz, de az érték egy dokumentum, amely struktúrával rendelkezik. (Dokumentum pl.: JSON, XML és egyéb félig-strukturált formátumok.)
* Gráf adatbázisok: az adatmodellje csúcsokból és élekből áll. A csúcsok rendelkezhetnek attribútumokkal, míg az élek címkékkel és attribútumokkal egyaránt.
MapReduce
Nagy mennyiségű adat feldolgozás elosztott rendszerek esetén amely során párhuzamositva dolgozzuk fel az adatokat. A mapper vizsgálja és rendszerezi a bemenő adatokat majd tovább adja a reducernek ami meg le fogja szűrni az adatokat úgy, hogy eltűnteti
a duplikátumokat.
Master, worker: ez a kettő elem alapján párhuzamositható, a master szétosztja a feladatokat a
workereknek, majd a worker vissza adja az eredményeket a mastereknek. Pl.: Hadoop