89
1 Adatbázisrendszere k megvalósítása Vegera József

Adatbázisrendszerek megvalósítása

Embed Size (px)

DESCRIPTION

Adatbázisrendszerek megvalósítása. Vegera József. Adatbázis fogalma. - PowerPoint PPT Presentation

Citation preview

Page 1: Adatbázisrendszerek megvalósítása

1

Adatbázisrendszerek megvalósítása

Vegera József

Page 2: Adatbázisrendszerek megvalósítása

2

Adatbázis fogalma

Adatbázison köznapi értelemben valamely rendezett, valamilyen szisztéma szerint tárolt adatokat értünk, melyek nem feltétlenül számítógépen kerülnek tárolásra. Az adathalmaz csak akkor válik adatbázissá, ha az valamilyen rend szerint épül fel, mely lehetővé teszi az adatok értelmes kezelését. Természetesen ugyanazon adathalmazból többféle rendszerezés alapján alakíthatunk ki adatbázist.

Page 3: Adatbázisrendszerek megvalósítása

3

Adatbáziskezelő rendszer

Az adatbázisok mellé egy adatbáziskezelő rendszer (DBMS) is járul, mely az adatbázis vagy adatbázisok üzemeltetését biztosítja. Hagyományos adatbázis esetén ez a kezelő személyzet intelligenciájának része, elektronikus adatbázisok esetén pedig valamilyen szoftver. Példák?

Page 4: Adatbázisrendszerek megvalósítása

4

Az adatbáziskezelők feladatköre

Függetlenség az aktuális hardver konfigurációtól

Függetlenség az adatelérés módjától

Függetlenség az adatstruktúráktól

Page 5: Adatbázisrendszerek megvalósítása

5

Adatbázis modellek

Hierarchikus adatbázis modell Csak 1:n típusú kapcsolatok képezhetők le segítségével.

Hálós adatbázis modell Ebben a modellben n:m típusú adatkapcsolatok is leírhatók. Az adat visszakeresése csak a tárolt kapcsolatok segítségével bejárható.

Page 6: Adatbázisrendszerek megvalósítása

6

Adatbázis modellek

Relációs adatbázis modell Az adatokat táblázatok soraiban képezzük le.

Objektum-orientált modellAz egyes adatbázis elemek (objektumok) "tudják", hogy kik ők, mire használhatók, s miként kapcsolódnak a többi adatbázis-elemhez.

Page 7: Adatbázisrendszerek megvalósítása

7

Relációk

A reláció nem más mint egy táblázat, a táblázat soraiban tárolt adatokkal együtt.

Személy

Személyi szám

Név Város Foglalkozás

1 650410 1256 Kiss lászló Győr kőműves

2 781117 0131 Nagy Ágnes Szeged tanuló

1 610105 1167 Kiss László Budapest lakatos

Az előző relációból a személyi szám oszlopot elhagyva relációnak tekinthető-e a táblázat? Mivel nem zárható ki, hogy két azonos nevű és szakmájú személy éljen egy településen belül a személyi szám nélkül két

azonos sor is szerepelhetne, mely a relációban nem megengedett.

Page 8: Adatbázisrendszerek megvalósítása

8

Funkcionális kapcsolat

Egy vagy több adat konkrét értékéből más adatok egyértelműen következnek. Például a személyi szám és a név között funkcionális kapcsolat áll fenn, mivel minden embernek különböző személyi száma van. Ezt a SZEMÉLYI_SZÁM -> NÉV kifejezéssel jelölhetjük.

Page 9: Adatbázisrendszerek megvalósítása

9

Funkcionális függőség

A funkcionális függőség bal oldalát a függőség meghatározójának nevezzük. A NÉV -> SZÜLETÉSI_ÉV állítás nem igaz, mert több személynek lehet azonos neve, akik különböző időpontokban születtek.

Page 10: Adatbázisrendszerek megvalósítása

10

Függőség több attribútumnál

A funkcionális függőség jobb oldalán több attribútum is állhat. Például az AUTÓ_RENDSZÁM -> TIPUS, TULAJDONOS funkcionális függőség azt fejezi ki, hogy az autó rendszámából következik a típusa és a tulajdonos neve, mivel minden autónak különböző a rendszáma, minden autónak egy tulajdonosa és típusa van.

Page 11: Adatbázisrendszerek megvalósítása

11

Kölcsönös függőségpéldául a házastársak esetén FÉRJ_SZEM_SZÁMA -> FELESÉG_SZEM_SZÁMA, illetve FELESÉG_SZEM_SZÁMA <- FÉRJ_SZEM_SZÁMA. Mindkét funkcionális kapcsolat igaz és ezt a FÉRJ_SZEM_SZÁMA <-> FELESÉG_SZEM_SZÁMA jelöléssel fejezzük ki.(Többnejűség..)

Page 12: Adatbázisrendszerek megvalósítása

12

Teljes funkcionális függőség

A meghatározó oldalon nincsen felesleges attribútum. A RENDSZÁM, TÍPUS -> SZÍN funkcionális függőség nem teljes funkcionális függőség, mivel a rendszám már egyértelműen meghatározza a kocsi színét, ehhez nincs szükség a típusra is.

Page 13: Adatbázisrendszerek megvalósítása

13

Relációk leírása

reláció_név=({attribútumok},{funkcionális függőségek listája})

Pl: SZEMÉLYEK=({SZEMÉLYI_SZÁM,NÉV,MUNKAHELY},

{SZEMÉLYI_SZÁM -> NÉV,SZEMÉLYI_SZÁM -> MUNKAHELY})

Page 14: Adatbázisrendszerek megvalósítása

14

Többértékű függőség

Az egyik attribútumhoz egy másik attribútum csoportja, halmaza kapcsolódik.

Például minden embernek lehet több szakmája. Jelölése: SZEMÉLYI_SZÁM ->> SZAKMA Egy attribútum értékéből egynél több további attribútum értéke is következhet: SZEMÉLYI_SZÁM ->> SZAKMA, OKLEVÉL_KELTE

Page 15: Adatbázisrendszerek megvalósítása

15

Reláció kulcs A reláció kulcs a reláció egy sorát azonosítja egyértelműen. A reláció - definíció szerint- nem tartalmazhat két azonos sort, ezért minden relációban létezik kulcs. Jellemzői:

az attribútumok egy olyan csoportja, melyek csak egy sort azonosítanak (egyértelműség)

a kulcsban szereplő attribútumok egyetlen részhalmaza sem alkot kulcsot

a kulcsban szereplő attribútumok értéke nem lehet definiálatlan (NULL)

Page 16: Adatbázisrendszerek megvalósítása

16

Összetett kulcsok, idegen kulcsok

A kulcs több attribútum érték összekapcsolásával állítható elő.

A relációban külső kulcsot vagy kulcsokat is megkülönböztethetünk. Ezek az attribútumok nem az adott relációban, hanem az adatbázis másik relációjában alkotnak kulcsot.

Page 17: Adatbázisrendszerek megvalósítása

17

Redundancia

Ha valamely tényt vagy a többi adatból levezethető mennyiséget ismételten (többszörösen) tároljuk az adatbázisban. Könnyen az adatbázis inkonzisztenciáját okozhatja, a felesleges terület lefoglalásán túl.

Page 18: Adatbázisrendszerek megvalósítása

18

Elsődleges attribútum

Azokat az attribútumok, melyek legalább egy reláció kulcsban szerepelnek. A többi attribútumot nem elsődlegesnek (másodlagosnak) nevezzük.

Page 19: Adatbázisrendszerek megvalósítása

19

Első normál forma (1NF)

Egy reláció első normál formában van, ha minden attribútuma egyszerű, nem összetett adat.

Annak eldöntése, hogy egy attribútumot egyszerűnek vagy összetettnek tekintünk nem mindig egyértelmű, az adatok felhasználásától is függ.

Page 20: Adatbázisrendszerek megvalósítása

20

Második normál forma (2NF)

A reláció első normál formában van

A reláció minden nem elsődleges attribútuma teljes funkcionális függőségben van az összes reláció kulccsal

Terem Időpont Előadás Férőhely

B 10:00 Mitológia 250A 8:30 Irodalom 130B 11:30 Szinház 250A 11:00 Festészet 130A 13:15 Régészet 130

Page 21: Adatbázisrendszerek megvalósítása

21

Harmadik normál forma (3NF)

A reláció második normál formában van.

A reláció nem tartalmaz funkcionális függőséget a nem elsődleges attribútumok között.

Szakkörök

Szakkör Tanár Születési év

Képzőművész Sár Izodor 1943

Iparművész Sár Izodor 1943

Karate Erős János 1972

Page 22: Adatbázisrendszerek megvalósítása

22

Boyce/Codd normál forma (BCNF)

Több kulccsal rendelkező relációk esetén minden elsődleges attribútum teljes funkcionális függőségben van azokkal a kulcsokkal, melyeknek nem része.

Page 23: Adatbázisrendszerek megvalósítása

23

Példa BCNF szükségességéreTantárgyak

Tanár Időpont Tantárgy Félév Diák_szám

Kiss Pál 93/1 Adatbázis 1 17

Jó Péter 93/1 Unix 1 21

Kiss Pál 93/2 Adatbázis 2 32

Jó Péter 93/1 Unix 2 19

KissPál 93/1 Adatbázis 3 25

A relációnak két kulcsa van, a (Tanár, Időpont, Félév) és a (Tantárgy, Időpont, Félév). A tanár attribútum az őt nem tartalmazó reláció kulcs (Tantárgy, Időpont, Félév) csak egy részétől (Tantárgy, Félév) függ.

Page 24: Adatbázisrendszerek megvalósítása

24

Negyedik normál forma (4NF)

A többértékű függőségekből adódó redundancia kiszűrését szolgálja.

Harmadik normál formában van.

Egy X->>Y többértékű függőséget tartalmazó relációban csak az X és Y-ban megtalálható attribútumokat tartalmazza.

Page 25: Adatbázisrendszerek megvalósítása

25

Példa 4NF szükségességére

Az eredeti reláció kulcsa valamennyi attribútumot tartalmazza, mégis tartalmaz redundanciát, ugyanaz a személy-barát illetve személy-hobby kapcsolat többször is szerepelhet.

Barátok-hobbik

Személy Barát Hobbi

Nagy József Elek Attila foci

Nagy JózsefVarga Attila

foci

Kiss Péter Kiss Pál sakk

Kiss Péter Kiss Pál video

Page 26: Adatbázisrendszerek megvalósítása

26

Ötödik normál forma (5NF)

A többértékű függőségek külön relációkban tárolásával információt veszthetünk.Tanár->>Tanfolyam, Tanfolyam->>Helyszín

Tanár-Tanfolyam-Helyszín

Tanár Tanfolyam Helyszín

Nagy Éva Adatbázis I. Szeged

Kiss Pál Adatbázis I. Győr

Nagy ÉvaAdatbázis II.

Pécs

Kiss Pál Adatbázis I. Pécs

Page 27: Adatbázisrendszerek megvalósítása

27

Példa 5NF szükségességére

Előzőek szerinti felbontás után információt vesztünk. Hol? Megoldás?

Tanár_Tanfolyam

Tanár Tanfolyam

Nagy Éva Adatbázis I.

Kiss Pál Adatbázis I.

Nagy ÉvaAdatbázis II.

Tanfolyam-Helyszín

TanfolyamHelyszín

Adatbázis I. Szeged

Adatbázis I. Győr

Adatbázis II. Pécs

Adatbázis I. Pécs

Page 28: Adatbázisrendszerek megvalósítása

28

Indexek fogalma és felépítése

A relációkhoz kapcsolt indexek segítségével az index kulcs ismeretében közvetlenül megkaphatjuk a kulcsot tartalmazó sor fizikai helyét az adatbázisban. Az indexek képzésére két módszer terjedt el, a hash kódok és a bináris fák.

Page 29: Adatbázisrendszerek megvalósítása

29

Hash kódegy számítási algoritmus alapján magából az index kulcsból alakul ki a hash kód, mely alapján egy táblázatból kiolvasható a keresett értéket tartalmazó sor fizikai címe. A hash kód számítási algoritmusa nem mindig ad különböző értékeket az index kulcsokra. Az azonos kódot adó kulcsokat összeláncolják egy listában.

Page 30: Adatbázisrendszerek megvalósítása

30

Bináris fák Ehhez az index kulcsokat növekvő vagy csökkenő sorrendbe kell rendezni. A keresés mindig a gyökértől kezdődik, a megfelelő ág felé folytatódik, és akkor ér véget, ha egy levélhez érünk. Ha a levélben tárolt index kulcs azonos a keresettel, akkor megtaláltuk a keresett értéket, ellenkező esetben sikertelen volt a keresés.

Page 31: Adatbázisrendszerek megvalósítása

31

Bináris fák

Felépítésénél arra törekszenek, hogy a fa valamennyi ága azonos hosszúságú legyen (kiegyensúlyozott fa).

A gyakorlati megoldásokban a hatékonyság kedvéért a csomópontokban nem csak egy index kulcs értéket tárolnak, hanem a háttértár tárolási egység (blokk) méretének megfelelő számút.

A reláció sorait az index kulcs szerinti növekvő vagy csökkenő sorrendben is végigjárhatjuk.

Page 32: Adatbázisrendszerek megvalósítása

32

Relációs algebra műveletei

Szelekció

Projekció

Descartes szorzat

Összekapcsolás

Halmaz műveletek (unió, metszet, különbség)

Page 33: Adatbázisrendszerek megvalósítása

33

Az SQL lekérdező nyelv

adatdefiníciós nyelv, DDL

adatmanipulációs nyelv,

lekérdező nyelv

adatvezérlő nyelv

Page 34: Adatbázisrendszerek megvalósítása

34

Az SQL lekérdező nyelv adatdefiníciós nyelv, DDLadatmanipulációs nyelv, DMLlekérdező nyelv, QLadatvezérlő nyelv, DCL

Az SQL halmaz orientált nyelv, mely a relációkon dolgozik. Nem kell definiálni a művelet végrehajtásának lépéseit. A művelet végrehajtásához optimális megoldás megtalálása a nyelvi processzor feladata, nem a programozóé. (Elvileg..)

Page 35: Adatbázisrendszerek megvalósítása

35

Az adatdefiniciós nyelv

Segítségével hozhatjuk létre (CREATE), illetve szüntethetjük meg (DROP) a relációkat, az indexeket illetve a nézet táblázatokat.

Pl: CREATE TABLE Tanarok (Tanar_azonosito NUMERIC (4) PRIMARY KEY, Nev CHAR (30) NOT NULL, Cim CHAR (40) NOT NULL, Telefon CHAR (15));

Page 36: Adatbázisrendszerek megvalósítása

36

CREATE TABLE általános alakja

CREATE TABLE reláció_név(attribútum_név adattípus [(szélesség)] [CONSTRAINT megszorítás_név] [oszlop_megszorítás],.. ) [CONSTRAINT megszorítás_név] [tábla_megszorítás];

Page 37: Adatbázisrendszerek megvalósítása

37

Oszlop megszorítás NULL az attribútum definíciójában arra utal, hogy az adat megadása nem kötelező (alapértelmezett). NOT NULL az attribútum definíciójában arra utal, hogy az adat megadása kötelező, azaz nem vihető be olyan sor a relációban, ahol az így definiált adat nincs kitöltve.PRIMARY KEY ez az oszlop a tábla elsődleges kulcsa.UNIQUE ez az oszlop a tábla kulcsa.CHECK(feltétel) csak feltételt kielégítő értékek kerülhetnek be az oszlopba.[FOREIGN KEY] REFERENCES tábla [ (oszlop) ], ez az oszlop külső kulcs.

Page 38: Adatbázisrendszerek megvalósítása

38

Tábla megszorításA tábla megszorításban több oszlopra vonatkozó

korlátozásokat adhatunk meg.PRIMARY KEY(oszlop1[, oszlop2, ...]) ezek az oszlopok együtt alkotják az elsődleges kulcsot.UNIQUE(oszlop1[, osylop2, ...]) ezek az oszlopok együtt kulcsot alkotnak.CHECK(feltétel) csak feltételt kielégítő sorok kerülhetnek be a táblába.FOREIGN KEY (oszlop1[, oszlop2, ...]) REFERENCES tábla(oszlop1[, oszlop2, ...]), az oszlopok külső kulcsot alkotnak a megadott tábla oszlopaihoz.

Page 39: Adatbázisrendszerek megvalósítása

39

Reláció módosítása

ALTER paranccsal

ALTER TABLE reláció_név ADD (bővítés)

ALTER TABLE reláció_név MODIFY (változtatás)

ALTER TABLE reláció_név DROP (szűkítés)

Pl: ALTER TABLE Diakok MODIFY nev CHAR (40) NOT NULL;

Page 40: Adatbázisrendszerek megvalósítása

40

Az adatmanipulációs nyelv

A relációk feltöltését (INSERT), az attribútumok módosítását (UPDATE) és a sorok törlését (DELETE) biztosítja.

Pl: INSERT INTO Diakok (Diak_azonosito, Nev, Cim, Osztaly)VALUES (435, 'Nagy Istvan', 'Budapest O utca 3.', '3.b');

Page 41: Adatbázisrendszerek megvalósítása

41

Általános szintaktikájuk

INSERT INTO reláció [(attribútum_név, attribútum_név, ...)]VALUES (érték, érték, ...);

UPDATE reláció_névSET attribútum_név = érték, attribútum_név = érték, ...[WHERE feltétel];

DELETE FROM reláció_név[WHERE feltétel];

Page 42: Adatbázisrendszerek megvalósítása

42

A lekérdező nyelvProjekció:SELECT [DISTINCT]attribútum_név, attribútum_név, ... FROM reláció_név;Szelekció: SELECT attribútum_név, attribútum_név, ... FROM reláció_névWHERE feltétel; Pl: SELECT idopont, tantargy FROM orarend WHERE osztaly = '3/b';

Page 43: Adatbázisrendszerek megvalósítása

43

SELECT operátorai

Összehasonlító operátorok

Operátor Értelmezés

= egyenlő

!= <> ^= nem egyenlő

> nagyobb

>= nagyobb egyenlő

"<" kisebb

"<=" kisebb egyenlő

Logikai operátorok

Operátor Értelmezés

NOTLogikai tagadás

AND Logikai és

OR Logikai vagy

Page 44: Adatbázisrendszerek megvalósítása

44

SELECT operátorai

Összehasonlító operátorok halmazokra

Operátor Értelmezés

BETWEEN x AND y adott értékek közé esik

IN (a, b, c, ...)az értékek között található

LIKE minta hasonlít a mintára

SELECT Diak_azonosito FROM Osztalyzatok WHERE Osztalyzat BETWEEN 3 AND 5 AND tantargy = 'matematika';

Page 45: Adatbázisrendszerek megvalósítása

45

Lekérdezések csoportosítása

A lekérdezés eredményét csoportosíthatjuk és a csoportok között is további szelekciót alkalmazhatunk a GROUP BY és HAVING alparancsokkal.

SELECT attribútumok FROM reláció[WHERE feltétel]GROUP BY attribútum[HAVING csoport_feltétel];

Page 46: Adatbázisrendszerek megvalósítása

46

Csoportfüggvények

AVG (attribútum)

COUNT (attribútum)

COUNT (*)

MAX (attribútum)

MIN (attribútum)

SUM (attribútum)

STDDEV(attribútum)

Page 47: Adatbázisrendszerek megvalósítása

47

Példa csoportfüggvényre

SELECT Osztály, COUNT (*) FROM Diakok GROUP BY OsztalyHAVING COUNT (*) > 5

Page 48: Adatbázisrendszerek megvalósítása

48

Konverziós függvények

Karakteres (LENGTH, UPPER, SUBSTR..)

Numerikus (ROUND, TRUNC, SQRT..)

Dátum (TO_CHAR, MONTH_BETWEEN)

Page 49: Adatbázisrendszerek megvalósítása

49

Összekapcsolások

Belső (INNER JOIN)

Külső (OUTER JOIN)LEFT JOIN

RIGHT JOIN

Page 50: Adatbázisrendszerek megvalósítása

50

Halmazműveletek

Unió Metszet Különbség

SELECT ....UNIONSELECT ...

SELECT ...INTERSECTSELECT ...

SELECT ... MINUSSELECT ...

A MINUS kulcsszó helyett az EXCEPT használandó néhány adatbáziskezelőben

Page 51: Adatbázisrendszerek megvalósítása

51

A vezérlő nyelv

Felhasználók jogosultságkezelése (GRANT, REVOKE,..)

Tranzakciókezelés (COMMIT, ROLLBACK,..)

Page 52: Adatbázisrendszerek megvalósítása

Tárolt rutinok

Egy tárolt eljárás olyan SQL nyelven írt parancsok összessége,amelyet az adatbázis-kiszolgálón rögzítünk, s utána a programozásban használatos módon meghívhatjuk.

52

Page 53: Adatbázisrendszerek megvalósítása

Tárolt rutinok előnyei

Az adatbázissal kapcsolatos logika valóban az adatbázis szintjére kerülhet, nem teszi nehezen érthetővé a programkódot.

Az itt elvégzett műveletekben szereplő rekordok nem hagyják el az adatbázis-kiszolgálót, hanem ott helyben történik meg a feldolgozásuk. (hálózati terhelés, késleltetés)

53

Page 54: Adatbázisrendszerek megvalósítása

Tárolt rutinok

Tárolt eljárások

Tárolt függvények: van valódi visszatérési értéke

54

Page 55: Adatbázisrendszerek megvalósítása

Felhasználói változók

Értékek tárolására, hivatkozására

Globálisak az adott kapcsolaton belül (bármely adatbázisban látszódhat, de mások nem látják)

Beállítása: SET @változónév = érték

Kiolvasása: SELECT @változónév

Tárolt rutinok hívásánál, vagy kiértékelésénél hasznos.

55

Page 56: Adatbázisrendszerek megvalósítása

Tárolt eljárások paramétereinek típusai

Bemeneti, IN (konstans, vagy változó)

Kimeneti, OUT (felhasználói változó)

Be- és kimeneti, INOUT

Tárolt függvényeknél nem megadható, ott automatikusan IN lesz!

56

Page 57: Adatbázisrendszerek megvalósítása

Tárolt eljárásokLétrehozása: CREATE PROCEDURE eljárásnév( paraméterek) BEGIN … END

DELIMITER átírása pl. //

Hívása: CALL eljárásnév(paraméterek);

CREATE PROCEDURE negyzet(IN szam INT,OUT negyzete INT)BEGINSELECT szam*szam into negyzete;END //

CALL negyzet(4,@a);

57

Page 58: Adatbázisrendszerek megvalósítása

Tárolt függvények

CREATE FUNCTION funcdemo(szam int) RETURNS INTBEGINRETURN szam*szam;END

Hívásuk kifejezésben lehetséges:SELECT funcdemo(4);

58

Page 59: Adatbázisrendszerek megvalósítása

Tárolt rutinok utasításai

DDL utasítások (CREATE, DROP…) használhatók

Eljárásokban tranzakciós utasítások (függvényekben nem)

Ne használjunk önmagában eredményt adó utasításokat (can't return a result set in the given context hiba)pl. SELECT 3 helyett SELECT 3 INTO valtozo

59

Page 60: Adatbázisrendszerek megvalósítása

Jogosultságok

A felhasználónak EXECUTE jog szükséges. Pl: GRANT EXECUTE ON FUNCTION db.func TO user@host (Procs_priv-be kerül)

Természetesen a rutinokban lévő SQL utasítások futtatására is jogosult kell legyen a felhasználó. SECURITY TYPE= Definer | InvokerA Definer meghatározható deklaráláskor:CREATE DEFINER = 'admin'@'localhost' PROCEDURE …Alapértelmezett a CURRENT_USER

60

Page 61: Adatbázisrendszerek megvalósítása

Vezérlési szerkezetek

Ciklusok: REPEAT utasítások; UNTIL feltétel END REPAT

WHILE feltétel DO utasítások END WHILE

LOOP utasítások END LOOP (LEAVE)

Feltételek: IF feltétel THEN utasítások; ELSE utasítások END IF

61

Page 62: Adatbázisrendszerek megvalósítása

DECLARE

Lokális változók

Feltételek (CONDITION)

Hibakezelők (HANDLER)

Kurzorok létrehozására

62

Page 63: Adatbázisrendszerek megvalósítása

Hibakezelők (Handler)

DECLARE handler_típus HANDLER FOR feltétel[,...] utasítás (általában SET)

Handler típusa:CONTINUE folytatódik a rutin

EXIT kilép

UNDO tranzakció rollback

63

Page 64: Adatbázisrendszerek megvalósítása

Hibakezelők

Feltétel lehet:SQLSTATE érték

Saját feltétel

SQLWARNING (01 kezdetű SQLSTATE-ek)

NOT FOUND (02 kezdetű SQLSTATE-ek)

SQLEXCEPTION (minden SQLSTATE, ami nem 00,01,02-vel kezdődik)

MySQL Hibakód

64

Page 65: Adatbázisrendszerek megvalósítása

Feltételek (condition)

Handlerekhez saját feltételek készítése (SQLSTATE-ekből, hibakódokból) pl:

declare not_null condition for 1048; declare continue handler for not_null SET @error = ’not_null Error’;

65

Page 66: Adatbázisrendszerek megvalósítása

Kurzorok

Egy lekérdezés eredményének átmeneti tárolási lehetősége, ahonnan akár rekordonként visszahozhatók az adatok.

DECLARE

OPEN

FETCH

CLOSE

66

Page 67: Adatbázisrendszerek megvalósítása

Kurzorok példaDECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

OPEN cur1;

read_loop: LOOP FETCH cur1 INTO a, b;IF done THEN LEAVE read_loop; END IF; END LOOP;

CLOSE cur1;

67

Page 68: Adatbázisrendszerek megvalósítása

68

Az Oracle rendszer komponenseiAz Oracle szerver felépítésének és fő komponenseinek megismeréseEgy felhasználó Oracle példányhoz (instance) kapcsolódása hogyan történikA következő feladatok végrehajtásának állapotai:

LekérdezésekDML utasításokCommit utasítások

Az állományok, folyamatok és az ORACLE szerver által használt memóriarészek bemutatása

Page 69: Adatbázisrendszerek megvalósítása

69

Az Oracle adatbázis két fő része

Az adatbázis vagyis a fizikai struktúrák rendszere

A példány (instance) vagyis a memória struktúrák és folyamatok rendszere

Page 70: Adatbázisrendszerek megvalósítása

70

1. Az adatbázis vagyis a fizikai struktúrák rendszere

A vezérlő fájl (control file), mely az adatbázis konfigurációját tároljaA helyrehozó napló fájlok (redo log files), amikben a helyreállításhoz szükséges információkat tároljukAz adatfájlok, amelyekben az összes tárolt adat szerepelParaméterfájl, amelybe olyan paramétereket tárolunk, amelyek befolyásolják egy példány méretét és tulajdonságaitJelszófájl

Page 71: Adatbázisrendszerek megvalósítása

71

2. A memória struktúrák és folyamatok rendszere /instance

A memóriában lefoglalt System Global Area (SGA) terület

Azok a szerverfolyamatok, amelyek az adatbázis-műveletek végrehajtásáért felelősek.

Page 72: Adatbázisrendszerek megvalósítása

Oracle instance állapotai

Closed consistently

Crash closed

Started (init.ora, vagy spfile beolvasása, SGA lefoglalás)

Mounted (vezérlő fájlok beolvasása, egy adatbázist egyszerre több példány is csatolhat)

Opened (normál üzem, online database fájlok, redo log fájlok nyitva)

Restricted mode (csak a restricted session system priv-vel rendelkezők használhatják)

72

Page 73: Adatbázisrendszerek megvalósítása

73

A vezérlő fájlok (Control files)A példány indításakor az adatbázis rákapcsolásához (mount) be kell olvasni a vezérlő fájlokat.Az adatbázist alkotó fizikai fájlokat határozza meg.Ha új fájlt adunk az adatbázishoz, akkor automatikusan módosulnak.A vezérlő fájlok helyét az inicializálási paraméterben adjuk meg. Adatvédelmi szempontból legalább három különböző fizikai eszközön legyen másolata (multiplex the control files). Ez is inicializálási paraméterrel adható meg. Az Oracle szerver elvégzi a többszörös másolatok szinkronizációját.

Page 74: Adatbázisrendszerek megvalósítása

74

Napló állományok (Redo Log Files)

Az adatbázis változtatásait rögzítiKonzisztens állapot visszaállításhoz szükséges rendszerhiba, áramszünet, lemezhiba, stb. eseténAdatvédelmi okokból különböző lemezeken többszörös másolatokat kell belőle szinkronizáltan kezelni. A REDO napló REDO fájlcsoportokból áll.Egy csoport egy naplófájlból és annak multiplexelt másolataiból áll.Minden csoportnak van egy azonosítószáma.

Page 75: Adatbázisrendszerek megvalósítása

75

Naplóírás REDO csoportokbaA naplóíró folyamat (log writer process -LGWR) írja ki a REDO rekordokat a pufferből egy REDO csoportba, amíg vagy tele nem lesz a fájl, vagy nem érkezik egy direkt felszólítás, hogy a következő REDO csoportba folytassa a kiírást.

A REDO csoportok feltöltése körkörösen történik.

Page 76: Adatbázisrendszerek megvalósítása

76

Táblaterek (tablespaces) és adatfájlok

A legnagyobb tárolási egység (azonosító neve van), logikailag összetartozó adatelemeket tartalmaz, egy vagy több állományból állhat, de egy állomány csak egy tablespace része

Állapota lehet: on-line vagy off-line (kivéve a SYSTEM tablespace) illetve: read-write vagy read-only

Page 77: Adatbázisrendszerek megvalósítása

77

Szegmensek

Egy táblatér több szegmensből állhat, azonos tárolási szerkezetű adatok tárolására alkalmas.

Néhány szegmenstípus: normál tábla: mezők és rekordok egymás után

vannak ömlesztve (beszúrás sorrendjében helyezi el)

cluster tábla: a rekordok kulcs/idegen kulcs szerint rendezve helyezkednek el

rollback szegmens

temporary szegmens, stb.

Page 78: Adatbázisrendszerek megvalósítása

78

Területek (extents)

Egy szegmens több kiterjesztésből áll (extent)

Több, egymásután folyamatosan elhelyezkedő blokk együttese, folytonos tárterület, allokációs egység, túl sok extent fregmentációt jelent.

Page 79: Adatbázisrendszerek megvalósítása

79

AdatblokkokA területek (extents) folytonos adatblokkok halmazai.Az adatblokkok az adatbázis legkisebb írható/olvasható egységei.Az adatblokkok operációs rendszerbeli blokkokra képezhetők le.Egy blokk az adatok IO, olvasási, írási egysége, rendszerint nagyobb, mint a lemez blokk (annak többszörösei 4x, 8x,..)

Page 80: Adatbázisrendszerek megvalósítása

80

A memóriaszerkezet részei

System Global Area (SGA): Az összes szerverfolyamat és háttérfolyamat osztozik rajta

Program Global Area (PGA): Minden szerverfolyamatnak és háttérfolyamatnak saját memóriaterülete (PGA-ja) is van.

Page 81: Adatbázisrendszerek megvalósítása

81

SGA

Osztott memória terület, elemei:

shared pool: SQL utasítások nyilvántartása, adatszótár és kurzor adatokat tárol

data buffer: feldolgozás alatt álló adatelemek

redo log area: elvégzett műveletek naplója

rollback area: induló adatállapotok értékei

Page 82: Adatbázisrendszerek megvalósítása

82

PGAA PGA (Program Global Area) jellemzése:

rendezési terület: az SQL végrehajtáshoz szükséges rendezéseket, segédszámításokat végzi elsession leíró: a felhasználói munkakörnyezet paramétereit tároljakurzor terület: az SQL utasítások adatai, műveleti fáiverem terület: egyéb adatok tárolása

Page 83: Adatbázisrendszerek megvalósítása

83

FolyamatokAmikor egy alkalmazás elindul, akkor az Oracle szerver elindít egy szerverfolyamatot, amely lehetővé teszi az alkalmazás utasításainak végrehajtását.Az Oracle egy példány indításakor háttérfolyamatokat is elindít, amelyek kommunikálnak egymással és az operációs rendszerrel.A háttérfolyamatok kezelik a memóriát, puffereket, végrehajtják az írási, olvasási műveleteket a lemezen, karbantartásokat végeznek.

Page 84: Adatbázisrendszerek megvalósítása

84

HáttérfolyamatokSystem monitor (SMON): Katasztrófa utáni indításkor elvégzi a helyreállítástProcess monitor (PMON): Ha egy felhasználói folyamat megszakad, akkor elvégzi a szükséges takarítást, karbantartástDatabase writer (DBWn): Az adatpufferből kiírja lemezre, egy fájlba a módosított blokkokatCheckpoint (CKPT): Ellenőrzési pontok esetén elindítja a DBWn folyamatokat és frissíti az adatbázis összes adatállományát és vezérlő állományátLog writer (LGWR): A REDO napló bejegyzéseit írja ki a lemezreArchiver (ARCn): A REDO napló állomány másolatait a mentésre kijelölt lemezekre írja ki

Page 85: Adatbázisrendszerek megvalósítása

85

Az adatbázishoz nem tartozó fájlok

1. A paraméterfájl az Oracle példány jellemzőit határozza meg, például az SGA memóriarészeinek méretét.

2. A jelszófájlból derül ki, hogy melyek azok a felhasználók, akik elindíthatnak vagy lekapcsolhatnak egy Oracle példányt.

3. Az archivált REDO naplófájlok a naplófájl másolatai, amelyeket lemezhiba után lehet helyreállításhoz használni

Page 86: Adatbázisrendszerek megvalósítása

86

Egy SQL utasítás végrehajtásának folyamataEgy példányhoz kapcsolódáshoz (Connect) szükséges:

Felhasználói folyamatSzerverfolyamat

Az SQL utasítás típusától függ, hogy az Oracle szerver milyen komponenseire lesz szükség:

A lekérdezések olyan folyamatokat indítanak, amelyek ahhoz kellenek, hogy megkapjuk a kívánt sorokatAz adatmódosító (DML) utasítások naplózó folyamatokat is indítanak, hogy elmentsék a változásokatA véglegesítés (Commit) biztosítja a tranzakciók helyreállíthatóságát

Page 87: Adatbázisrendszerek megvalósítása

87

Kapcsolódás az adatbázishoz

Háromféleképp lehet egy Oracle szerverhez kapcsolódni:

Operációs rendszeren keresztül

Kliens-szerver kapcsolaton keresztül

Háromrétegű kapcsolaton keresztül

Page 88: Adatbázisrendszerek megvalósítása

88

Munkaszakasz (session)

Kapcsolódáskor egy munkaszakasz (session) kezdődik.

A munkaszakasz a felhasználó érvényesítése (validálásakor) esetén kezdődik és a kilépéséig vagy egy abnormális megszakításig tart.

Egy felhasználó több munkaszakaszt is nyithat. Ehhez szükséges, hogy az Oracle szerver elérhető, használható legyen.

Page 89: Adatbázisrendszerek megvalósítása

89

Lekérdezések végrehajtása1. Elemzés (Parse):

A közös SQL pufferben (shared pool) megnézi, hogy szerepel-e ez az utasításSzintaktikus ellenőrzés, léteznek-e az objektumok, rendelkezik-e a megfelelő jogokkalAz elemzés alatt zárolja (lock) az objektumokatElkészíti és tárolja az optimális végrehajtási tervet

2. Végrehajtás (Execute): Előállítja a keresett sorokat3. Visszaadás (Fetch): Visszaadja a sorokat a felhasználói folyamatnak