Tranzakciók, nézettáblák, indexek. Párhuzamos folyamatok irányítása Virtuális és materializált nézettáblák Az adathozzáférés felgyorsítása

Hasonló dokumentumok
Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Tranzakciók az SQL-ben

ADATBÁZISOK: TAN7.EA témaköre SQL DDL, DML, DCL, Tranz.kez.

6.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Tranzakció-kezelés, alapfogalmak. Vassányi István, 2012.

9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Adatbázis tartalmának módosítása

Az SQL adatbázisnyelv: DML

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

SQL DDL: Táblák, megszorítások (constraints), triggerek, nézettáblák

SQL bevezetés. Select-From-Where záradékok Több relációt tartalmazó lekérdezések Alkérdések

Adatbázis tartalmának módosítása (DML), az adatbázis-kezelı rendszerek felépítése,

Tranzakciókezelés PL/SQL-ben

Bevezetés: az SQL-be

B I T M A N B I v: T M A N

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

SQL DDL-1: táblák és megszorítások

SQL DDL-2 (aktív elemek) triggerek

Adatbázis tartalmának módosítása. SQL DML utasítások

Nézetek és indexek. 8. fejezet Nézettáblák

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

Adatbázis Rendszerek II. 10. Tranzakció kezelés 72/1B IT MAN

Adatbázis kezelés Delphiben. SQL lekérdezések

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Java és web programozás

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Analitikus adatfeldolgozás. Adattárház Adatkocka Adatbányászat

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Relációs adatmodell. Adatbázisok használata

Adatbázisok elmélete 10. előadás

Kalmár György Adatbázis alapú rendszerek

Adatbázisok elmélete

Csima Judit szeptember 6.

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Adatbázis használat I. 5. gyakorlat

A trigger egy aktualizálási művelet esetén végrehajtandó programrészletet definiál. Alakja:

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Informatika szigorlat 9-es tétel: Az adatbázis-kezelő rendszerek fogalmai

Adatbázis rendszerek SQL nyomkövetés

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Adatbázisok* tulajdonságai

B I T M A N B I v: T M A N

Adatbázisok elmélete 9. előadás

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Tudásalapú információ integráció

Az adatbázisrendszerek világa

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Marosvásárhely. ABR ( Adatbázisrendszerek) 12. Előadás:

TABLE ACCESS FULL HASH CLUSTER BY INDEX ROWID BY USER ROWID BY GLOBAL INDEX ROWID BY LOCAL INDEX ROWID

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Lekérdezések az SQL-ben 2.rész

Adatbázis rendszerek tervezése

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

Relációsémák létrehozása SQL nyelvben

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Adatbázis-kezelés. Harmadik előadás

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

Adatbázis Rendszerek II. 2. Gyakorló környezet

Adatbázisok II Jánosi-Rancz Katalin Tünde 327A 1-1

Adatbázismodellek. 1. ábra Hierarchikus modell

Adatbázisok elmélete 1. előadás

Optimista konkurenciavezérlés

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei


Webapp (in)security. Gyakori hibákról és azok kivédéséről fejlesztőknek és üzemeltetőknek egyaránt. Veres-Szentkirályi András

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

Adatbázisrendszerek 9. előadás: Tranzakciók és konkurencia

A könyv tartalomjegyzéke

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Adatbázis Rendszerek II. 8. Gyakorló környezet

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

4. Előadás Az SQL adatbázisnyelv

Adatbázisok elmélete 9. előadás

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

Követelmények és feladatleírás

MIKOVINY SÁMUEL TÉRINFORMATIKAI EMLÉKVERSENY

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

Relációs algebra 2.rész példák

Adattípusok. Max. 2GByte

Adatbázisok elmélete 1. előadás

Adattípusok. Max. 2GByte

Indexek és SQL hangolás

Adatbázisok tavaszi félév Vizsgatételsor

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

8.Előadás Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Átírás:

Tranzakciók, nézettáblák, indexek Párhuzamos folyamatok irányítása Virtuális és materializált nézettáblák Az adathozzáférés felgyorsítása 1

Miért van szükség tranzakciókra? Az adatbázis rendszereket általában több felhasználó és folyamat használja egyidőben. Lekérdezések és módosítások egyaránt történhetnek. Az operációs rendszerektől eltérően, amelyek támogatják folyamatok interakcióját, az ab rendszereknek el kell különíteniük a folyamatokat. 2

Példa: rossz interakció Te és egy barátod egy időben töltötök fel 100 dollárt ugyanarra a számlára ATM-en keresztül. Az ab rendszernek biztosítania kell, hogy egyik művelet se vesszen el. Ezzel szemben az operációs rendszerek megengedik, hogy egy dokumentumot ketten szerkesszenek egy időben. Ha mind a ketten írnak, akkor az egyik változtatás elvész (elveszhet). 3

Tranzakciók Tranzakció = olyan folyamat, ami adatbázis lekérdezéseket, módosításokat tartalmaz. Az utasítások egy értelmes egészt alkotnak. Egyetlen utasítást tartalmaznak, vagy az SQL-ben explicit módon megadhatóak. 4

ACID tranzakciók Az ACID tranzakciók: Atomiság (atomicity): vagy az összes vagy egy utasítás sem hajtódik végre. Konzisztencia (consistency): az adatbázis megszorítások megőrződnek. Elkülönítés (isolation): a felhasználók számára úgy tűnik, mintha folyamatok, elkülönítve, egymás után futnának le. Tartósság (durability): egy befejeződött tranzakció módosításai nem vesznek el. Opcionálisan: gyengébb feltételek is megadhatóak. 5

COMMIT A COMMIT SQL utasítás végrehajtása után a tranzakció véglegesnek tekinthető. A tranzakció módosításai véglegesítődnek. 6

ROLLBACK A ROLLBACK SQL utasítás esetén a tranzakció abortál. Azaz az összes utasítás visszagörgetésre kerül. A 0-val való osztás vagy egyéb hibák, szintén visszagörgetést okozhatnak, akkor is, ha a programozó erre nem adott explicit utasítást. 7

Példa: egymásra ható folyamatok A Felszolgál(kocsma, sör, ár) táblánál tegyük fel, hogy Joe bárjában csak Bud és Miller sörök kaphatók 2.50 és 3.00 dollárért. Sally a Felszolgál táblából Joe legolcsóbb és legdrágább sörét kérdezi le. Joe viszont úgy dönt, hogy a Bud és Miller sörök helyett ezentúl Heinekent árul 3.50 dollárért. 8

Sally utasításai (max) SELECT MAX(ár) FROM Felszolgál WHERE kocsma = Joe bárja ; (min) SELECT MIN(ár) FROM Felszolgál WHERE kocsma = Joe bárja ; 9

Joe utasításai Ugyanabban a pillanatban Joe a következő utasításokat adja ki: (del) (ins) DELETE FROM Felszolgál WHERE kocsma = Joe bárja ; INSERT INTO Felszolgál VALUES( Joe bárja, Heineken, 3.50); 10

Átfedésben álló utasítások A (max) utasításnak a (min) előtt kell végrehajtódnia, hasonlóan (del) utasításnak az (ins) előtt, ettől eltekintve viszont nincsenek megszorítások a sorrendre vonatkozóan, ha Sally és Joe utasításait nem gyűjtjük egy-egy tranzakcióba. 11

Példa: egy furcsa átfedés Tételezzük fel a következő végrehajtási sorrendet: (max)(del)(ins)(min). Joe árai: Utasítás: Eredmény: {2.50,3.00} {2.50,3.00} (max) 3.00 (del) (ins) {3.50} (min) 3.50 Mit lát Sally? MAX < MIN! 12

A probléma megoldása tranzakciókkal Ha Sally utasításait, (max)(min), egy tranzakcióba gyűjtjük, akkor az előbbi inkonzisztencia nem történhet meg. Joe árait ekkor egy adott időpontban látja. Vagy a változtatások előtt vagy utánuk, vagy közben, de a MAX és a MIN ugyanazokból az árakból számolódik. 13

Egy másik hibaforrás: a visszagörgetés Tegyük fel, hogy Joe a (del)(ins) és utasításokat nem, mint tranzakció hajtja végre, utána viszont úgy dönt, jobb ha visszagörgeti a módosításokat. Ha Sally az (ins) után, de visszagörgetés előtt hajtatja végre a tranzakciót, olyan értéket kap, 3.50, ami nincs is benne az adatbázisban végül. 14

Megoldás A (del)(ins) és utasításokat Joe-nak is, mint tranzakciót kell végrehajtatnia, így a változtatások akkor válnak láthatóvá, ha tranzakció egy COMMIT utasítást hajt végre. Ha a tranzakció ehelyett visszagörgetődik, akkor a hatásai sohasem válnak láthatóvá. 15

Elkülönítési szintek Az SQL négy elkülönítési szintet definiál, amelyek megmondják, hogy milyen interakciók engedélyezettek az egy időben végrehajtódó tranzakciók közt. Ezek közül egy szint ( sorbarendezhető ) = ACID tranzakciók. Minden ab rendszer a saját tetszése szerint implementálhatja a tranzakciókat. 16

Az elkülönítési szint megválasztása Az utasítás: SET TRANSACTION ISOLATION LEVEL X ahol X = 1. SERIALIZABLE 2. REPEATABLE READ 3. READ COMMITTED 4. READ UNCOMMITTED 17

Sorbarendezhető (serializable) tranzakciók Ha Sally a (max)(min), Joe a (del)(ins) tranzakciót hajtatja végre, és Sally tranzakciója SERIALIZABLE elkülönítési szinten fut, akkor az adatbázist vagy Joe módosításai előtt vagy után látja, a (del) és (ins) közötti állapotban sohasem. 18

Az elkülönítési szint személyes választás A döntésed csak azt mondja meg, hogy te hogy látod az adatbázist, és nem azt, hogy mások hogy látják azt. Példa: Ha Joe sorbarendezhető elkülönítési szintet használ, de Sally nem, akkor lehet, hogy Sally nem talál árakat Joe bárja mellett. azaz, mintha Sally Joe tranzakciójának közepén futtatná a sajátját. 19

Read-Commited tranzakciók Ha Sally READ COMMITTED elkülönítési szintet választ, akkor csak kommitálás utáni adatot láthat, de nem feltétlenül mindig ugyanazt az adatot. Példa: READ COMMITTED mellett megengedett a (max)(del)(ins)(min) átfedés amennyiben Joe kommitál. Sally legnagyobb megdöbbenésére: MAX < MIN. 20

Repeatable-Read tranzakciók Hasonló a read-commited megszorításhoz. Itt, ha az adatot újra beolvassuk, akkor amit először láttunk, másodszor is látni fogjuk. De második és az azt követő beolvasások után akár több sort is láthatunk. 21

Példa: ismételhető olvasás Tegyük fel, hogy Sally REPEATABLE READ elkülönítési szintet választ, a végrehajtás sorrendje: (max)(del)(ins)(min). (max) a 2.50 és 3.00 dollár árakat látja. (min) látja a 3.50 dollárt, de 2.50 és 3.00 árakat is látja, mert egy korábbi olvasáskor (max) már látta azokat. 22

Read Uncommitted A READ UNCOMMITTED elkülönítési szinten futó tranzakció akkor is láthatja az adatokat, amikor a változtatások még nem lettek véglegesítve ( kommitolva ). Példa: Ha Sally a READ UNCOMMITTED szintet választja, akkor is láthatja a 3.50 dollárt, mint árat, ha később Joe abortálja a tranzakcióját. 23

Nézettáblák A nézettábla olyan reláció, amit tárolt táblák (alaptáblák) és más nézettáblák felhasználásával definiálunk. Kétféle létezik: 1. virtuális = nem tárolódik az adatbázisban; csak a relációt megadó lekérdezés. 2. Materializált = kiszámítódik, majd tárolásra kerül. 24

Nézettáblák létrehozása Deklaráció: CREATE [MATERIALIZED] VIEW <név> AS <lekérdezés>; Alapesetben virtualizált nézettábla jön létre. 25

Példa: nézettábla definíció Ihatja(alkesz, sör) nézettáblában az alkeszek mellett azon söröket tároljuk, melyeket legalább egy kocsmában felszolgálnak az általa látogatottak közül: CREATE VIEW Ihatja AS SELECT alkesz, sör FROM Látogat, Felszolgál WHERE Látogat.kocsma = Felszolgál.kocsma; 26

Példa: nézettáblákhoz való hozzáférés A nézettáblák ugyanúgy kérdezhetők le, mint az alaptáblák. A nézettáblákon keresztül az alaptáblák néhány esetben módosíthatóak is, ha a rendszer a módosításokat át tudja vezetni. Példa lekérdezés: SELECT sör FROM Ihatja WHERE alkesz = Sally ; 27

Materializált nézettáblák Probléma: minden alkalommal, amikor az alaptáblák valamelyike változik, a materializált nézettábla frissítése is szükségessé válhat. Ez viszont néha túl költséges. Megoldás: Periodikus frissítése a materializált nézettábláknak, amelyek egyébként nem aktuálisak. 28

Példa: levelezési lista A következő levelezési lista cs145- aut0708 valójában egy materializált nézettábla, ami a kurzusra beiratkozott hallgatókat tartalmazza. Ezt négyszer frissítik egy nap. A feliratkozás után közvetlen még nem feltétlen kapja meg az ember az akkor küldött emaileket. 29

Példa: adattárház Wal-Mart minden áruházának minden eladását egy adatbázisban tárolja. Éjszaka az új adatokkal frissítik az áruház lánc adattárházát, ami itt az eladások materializált nézeteiből áll. Az adattárházat aztán elemzők használják, hogy trendeket figyeljenek meg és odamozgassák az árukat, ahol azok a legjobb áron értékesíthetők. 30

Indexek Index = olyan adatszerkezet, amivel egy-egy reláció sorait gyorsabban érhetjük el adott attribútumának, attribútumainak értéke, értékei alapján. Lehet hash tábla, de az ab rendszerekben a legtöbb esetben kiegyensúlyozott keresési fával valósítják meg (B-fák). 31

Indexek deklarálása Nincs standard megoldás! Tipikus szintaxis: CREATE INDEX SörInd ON Sörök(gyártó); CREATE INDEX EladásInd ON Felszolgál(kocsma, sör); 32

Indexek használata Adott v értékre az index azokhoz a sorokhoz irányít, ahol ez a v érték megjelenik a megfelelő attribútum(ok)nál. Példa: a SörInd és az EladásInd indexek segítségével megkeressük azokat a söröket, melyeket Pete gyárt és Joe árul. (következő dia) 33

Indexek használata --- (2) SELECT ár FROM Sörök, Felszolgál WHERE gyártó = Pete AND Sör.név = Felszolgál.sör AND kocsma = Joe bárja ; 1. A SörInd segítségével megkapjuk azokat a söröket, melyeket Pete gyárt. 2. Aztán a EladásInd használatával a Joe bárjában felszolgált sörök árait kapjuk meg. 34

Adatbázisok hangolása Az adatbázisok hangolásánál komoly kérdést jelent annak eldöntése, hogy milyen indexeket használjanak. Mellette: az index felgyorsíthatja a lekérdezések végrehajtását. Ellene: a módosítások lassabbak lesznek, hiszen az indexeket is módosítani kell. 35

Példa: hangolás Tegyük fel, hogy a sörös adatbázisunkban a következők történhetnek: 1. Új tények kerülnek egy relációba (10%). 2. Adott kocsmára és sörre keressük az ottani árat (90%). Ekkor az EladásInd a Felszolgál(kocsma, sör) fölött nagyszerű szolgálatot tesz, a SörInd a Sörök(gyártó) fölött pedig inkább a kárunkra van. 36

Hangolási szakértők Fontos kutatási feladat. A kézi hangolás nagy szakértelmet kíván. A szakértő először egy lekérdezés terhelési kimutatást (query load) kap kézhez: 1. véletlenszerűen lekérdezéseket választanak a korábban végrehajtottak közül. 2. A tervező átad egy mintát. 37

Hangolási szakértők --- (2) A szakértő létrehozza a szerinte fontos indexeket, majd megvizsgálja azok hatását. Minden minta lekérdezés esetén a lekérdezés optimalizálónak használnia kell az indexeket. Így meg tudja mondani, hogy javult-e összességében a lekérdezések végrehajtási ideje. 38