11.24. - adatbázisok megvalósítása · tartalom 2017. 11. 23. 1 • adatbázisok (relációs,...
TRANSCRIPT
Tartalom
2017.11.23. 1
• Adatbázisok(relációs,objektumrelációs,NoSQL)• Adatbáziskezelőrendszerek• Adatbázisokfelépítése• Adatbázisoktervezése
Adatbázisok
2017.11.23. 2
• Adatbázisonvalamelycélmegvalósításánakérdekébengyűjtött,feldolgozottéstároltadatokacélelérésénekérdekébenmegfelelőenrendszerezettésrendezettstruktúrábantároltváltozatátértjük.
• Azadatokömlesztetttárolásanemtekinthetőadatbázisnak,mivelhiányzikbelőlearendszerezésésastruktúra.
Azadatbázisfogalma
• Papíron,irattárbanrendezett,rendszerezettformában• Elektronikusúton,számítógépesrendszerekben
Adatbázisoktárolásiformája
2017.11.23. 3
• Bankirendszerek• Vállalatinyilvántartások• Repülőgéphelyfoglalásirendszerek• Könyvtárinyilvántartások• Irattárinyilvántartások
Példák
• Valósidőben(azonnal)• Párhuzamosan(egyszerresokfelhasználó)
Alapvetőhozzáférésiigények
Adatbázisok
2017.11.23. 4
• Adatokatazótatarolunk,miótalétezikazírás• Azelsőadatbázisokakartotékok,irattárakvoltak• Aszámítógépekmegjelenéseéselterjedéselehetővétetteazadatokelektronikustárolását
• Azelsőszámítógépesadatbázisoktárolásalyukszalagon,lyukkártyántörtént,amelyeknemvoltakdirektmódonelérhetőkaszámítógépekszámára
Történelmiháttér
Adattárolás
2017.11.23. 5
• Amágnesesadathordozókmegjelenéseéselterjedéseegyszerűsítetteazadatoktárolásátéshozzáférését
• Ekkormégegyedi,speciálisszoftverekkellettekazadatokkezeléséhez
• Aszámítástechnikagyorsfejlődése(Mooretörvény)lehetővétetteegyrenagyobbmennyiségűadatokfeldolgozásátéstárolását
Történelmiháttér
Adattárolás
2017.11.23. 6
• Aszámítógépekfejlődésévelegyüttfejlődtekaprogramozásinyelvekésegyretöbblehetőségnyíltazadatokelektronikusfeldolgozásáraéstárolására
• Azadatokmennyiségéneknövekedésével, azadatokegyedifeldolgozásaéstárolásafárasztóésidőrablófeladattávált
• Megjelentazadatokegységesésáltalánosmódonvalófeldolgozásánakigénye
• EnnekmenténfejlődtekkiazAdatbáziskezelőrendszerek(DBMS)
Történelmiháttér
Adattárolás
2017.11.23. 7
• Tegyelehetővétetszőlegesadatbázisok(adatszerkezetek) létrehozását
• Szabványosmódontámogassaazadatoklekérdezésétésmódosítását(egységeslekérdezőnyelv)
• Támogassanagymennyiségűadattárolásátésvisszakereshetőségéthosszútávon
Adatkezelésielvárások
Adatbáziskezelő rendszerek
2017.11.23. 8
• Garantáljaazadatokbiztonságátameghibásodássalésilletéktelenhozzáférésselszemben
• Felügyeljeazadatokhozzáférésétazadatokhoz,olyanmódon,hogyazegyesfelhasználókműveleteinelegyenekhatássalatöbbifelhasználómunkájára
• Azegyidejűhozzáférésekneokozhassanakadathibátvagyinkonzisztenciát
Biztonságielvárások
Adatbáziskezelő rendszerek
2017.11.23. 9
• Afejlesztőneknekelljenfoglalkozniafizikaiszintűadattárolással
• Rejtseelafelhasználóelőlaszámítógépekarchitektúráját
• Azeszközöktípusátólfüggetlenülazalkalmazásugyanúgyhasználhatólegyenazadatbáziskezelőáltaltámogatottmindenplatformon
Absztrakciósréteg
Adatbáziskezelő rendszerek célja
2017.11.23. 10
• Azoperációsrendszerekkülönbözőadatelérésimódokattámogatnak
• Rejtseelazadatelérésmódjátafelhasználóvagyfejlesztőelőlakinekalekérdezésmegfogalmazásaésneazadatokelőállításimódjalegyenfeladat
• Többadatelérésimódrendelkezésreállásaeseténazoptimáliskiválasztása
Függetlenségazadatelérésmódjától
Adatbáziskezelő rendszerek célja
2017.11.23. 11
• Azadatokszerkezetiváltozásaiminélkevésbébefolyásoljákazalkalmazásokműködését
• Azadatokszerkezetibővítéseneokozzonproblémátazalkalmazásműködésében
Függetlenségazadattárolástól
Adatbáziskezelő rendszerek célja
2017.11.23. 12
• Azadatoktáblázatosábrázolása,megjelenítése• Egysoregyentitástírle• Atáblázatokatnevezzükrelációknak
Relációsadatbázismodell
• Arelációsadatmodellbővítésévelálltelő• Azobjektumorientáltmegközelítésbenhasználtobjektumésöröklődésimodelltalkalmazzaarelációkatmegvalósítótáblákra
• Támogatjaazadattípusokbővítésétsajátadattípusokkal(objektumok)
Objektum-relációsmodell
Adatbázis modellek (napjainkban)
2017.11.23. 13
• Kétfontosjellemzőamelyekmenténfejlesztik:performancia ésskálázhatóság
• Arelációsadattárolástóleltérőtárolásimódothasznál• kulcs-értékpárok• gráfstruktúra
NoSQL – Not only SQL
Adatbázis modellek (napjainkban)
2017.11.23. 14
Adatbázis modellek (napjainkban)
• Nagymennyiségűadatkezelése• Agilismódszertanoktámogatása(iterációésgyakorikódpublikálás)
• Dinamikusadatbázisséma(nincselőredefiniáltstruktúra,méretmeghatározás)– pl.újattribútumokhozzáadásaeseténnemkellameglévőadatokatkarbantartani
• Osztottfeldolgozástámogatása– automatikuspartícionálás – azalkalmazásnaknemkelltudniaamögötteállószerverhierarchiáról
• Automatikusadatreplikáció,nemkellezzelfoglalkozniaazalkalmazásnak
NoSQL előnyei
2017.11.23. 15
AdatokMetaadatok
Tárkezelő
Feldolgozó
Tranzakció-kezelő
Sémamódosítások Lekérdezések Adatmódosítások
Forrás:Jeffrey D.Ullman – Jenifer Widom:Adatbázisrendszerek
Adatbáziskezelők felépítése
2017.11.23. 16
• Végrehajtásukhozspeciálisjogosultságravanszükség• DataDefinition Language (DDL)segítségéveltörténik• Műveletekameta-adatokszintjén:• Sémalétrehozás• Sématörlés
• Struktúrák:• Létrehozása• Módosítása• Törlése
Séma(meta-adat)módosítások
Adatbázis műveletek
2017.11.23. 17
Adatbázis műveletek
• DataManipulation Language (DML)segítségéveltörténik
• Elvégezhetőműveletek• Adatoklétrehozása• Adatokmentése• Adatokkeresése• Adatokmódosítása• Adatoktörlése
Adatmanipuláció
2017.11.23. 18
• Adattáblák(relációk)• Adattábláksorokbólésoszlopokbólállnak• Azoszlopokatattribútumoknakisnevezzük• Asorokazonosítóvalrendelkezhetnek(elsődlegeskulcs)
• Atáblákoszlopai(attribútumai)hivatkozhatnakmásiktáblákelsődlegeskulcsaira– idegenkulcsok
Adatstruktúrákrelációsadatbázisokban
Relációs adatbázisok
2017.11.23. 19
ID Név Beosztás Szervezet Törölt
1 Kiss János Könyvelő 1 Hamis
2 NagyBéla Informatikus 2 Hamis
3 … … … …
ID Név Leírás Törölt
1 Pénzügy Pénzügyiés … Hamis
2 Informatika Informatikai… Hamis
3 … … …
Adatkapcsolatok:Idegenkulcs
Hivatkozásokmásiktáblaelsődlegeskulcsára
Szervezetek
Szemelyek
Elsődlegeskulcs
Egyediazonosító
Relációs adatbázisok
2017.11.23. 20
• Adatokgyorshozzáférésétbiztosítják• Különbözőtípusúindexekléteznek,azelterjedtebbek:• B-faindex• Bittérképindex• teljesszövegindexelés
• Amegfelelőindexeklétrehozásafelgyorsítjaazadatokkezelését
• Túlsokindexlétrehozásalassítjaazadatoklétrehozásátésmódosítását(mindenadatotfelkellvenniearendszernekazindexekbeis)
Indexek
Relációs adatbázisok
2017.11.23. 21
B-faindexek
6 27 50
1 2 3 4 5 16 18 22 30 35
7 8 9 11 15
Relációs adatbázisok
2017.11.23. 22
Bittérképindexek
ID Név Osztályzat
1 KissPista 1
2 NagyBéla 5
3 KovácsAndrás 4
4 LazaKati 4
5 ErősPista 5
1 2 3 4 5
1 0 0 0 0
0 0 0 0 1
0 0 0 1 0
0 0 0 1 0
0 0 0 0 1
BittérképekMindenértékhezvanegybittérkép
TáblaOsztályzatoszlopkevésfix(előrerögzített) értékkel
Relációs adatbázisok
2017.11.23. 23
• Gyárifüggvényekéseljárások• Támogatjákafelhasználóttetszőlegeseredményekelőállításában
• Lehetővéteszikazadatbázisbantároltadatoktetszőlegesátalakítását
• Felhasználóiadattípusok• Lehetővéteszikazadatbázis-kezelőrendszerekadattípusainakbővítését
Továbbiadatbázisobjektumok
Relációs adatbázisok
2017.11.23. 24
• Felhasználóáltaldefiniáltprogramcsomagok•Megírásukadatbáziskezelőbeintegráltprogramozásinyelventörténik
• Lehetővéteszikazadatokhelybelifeldolgozásátazadatbáziskezelőrendszerenbelül
• Nemkellazadatokatkiolvasniésátemelniakliensreésvisszaírniazadatbázisba
• Kiválóbatchadatfeldolgozásifeladatokelvégzésére• Alkalmaskomplextriggerek megírására
Tárolteljárásokésfüggvények
Relációs adatbázisok
2017.11.23. 25
• Akülönbözőadatbáziskezelő rendszerekmás-másprogramozásinyelvetkínálnakacélmegvalósítására
• Alkalmazásuknagyobbperformanciát eredményez,főlegnagymennyiségűadatfeldolgozásakor– nincsadatmozgatáshálózaton,csakegykontextusváltásaszerverenbelül
• Legismertebbprogramozásinyelvek• Oracle– PL/SQL• MSSQL– Tanzasct-SQL• pgSQL – PL/pgSQL• …
Tárolteljárásokésfüggvények
Relációs adatbázisok
2017.11.23. 26
• Adatokírásaésolvasásaközbenmeghívotteseménykezelőeljárások
• Azadattáblákbabeírtadatokellenőrzésére,kiegészítésére,átalakításárahasználják,példáulüresoszloptartalmánakfeltöltése,adatérvényeségénekellenőrzése,stb.
• Lehetsoronként(for each row)ésutasításonkéntvégrehajtott
• Lehetadatíráselőttvagyutánvégrehajtott(beforeinsert,before update,after insert,after update)
• Megírásukadatbáziskezelőspecifikus
Triggerek
Relációs adatbázisok
2017.11.23. 27
• Primary key (elsődlegeskulcs)• Egyediértékazoszloponbelül• Egyediindexkészülhozzá
• Foreign key (idegenkulcs)• Másiktáblaelsődlegeskulcsáravalóhivatkozás• Referenciaintegritáskikényszerítésére• Csakolyankulcsértékszerepelhetatáblában,amelylétezikahivatkozotttáblaelsődlegeskulcsértékeiközött
• Ellenőrzésimegszorítás• Oszlopértékkészleténekamegadása
Megszorítások
Relációs adatbázisok
2017.11.23. 28
• Adatoktárolásánakszegmentálásaazadattáblákbantároltadatokalapján
• Leginkábbnagymennyiségűadatgyorsabblekérdezéseeseténhasználják
• Például:számlákszétosztásatáblapartíciókközöttkiállításihónapvagyévalapján
• Lekérdezésekvégrehajtásánakfelgyorsítása:haapartícionálásban érintettadatmenténkeresünk,arendszercsakazokatapartíciókatveszifigyelembe,amelyekrelevánsadatottartalmazhatnak
• Megvalósításaadatbáziskezelőfüggő
Partícionálás
Relációs adatbázisok
2017.11.23. 29
• Szabványoslekérdezőnyelv•Mindenrelációsadatbáziskezelőtámogatja• Lehetővétesziazadatokalattiadatbáziskezelőmotorcseréjétaprogramkódcseréjenélkül
• Gyártóikiegészítések• Kényelmesebbéteszikalekérdezésekhasználatát
• Nagyobbperformanciát nyújtóopciók• Platformfüggővéteszikazalkalmazást
StandardQuery Language
Adatok lekérdezése (SQL)
2017.11.23. 30
• Insert – adatsorokokbeszúrásaadattáblákba
• Update– adatsorokattribútumainakmódosításaadottfeltételekmentén
• Delete - adatsoroktörléseadottfeltételekmentén
• Select – adatoklekérdezéseadattáblákból
SQLutasítások
Adatok lekérdezése (SQL)
2017.11.23. 31
• SELECT kifejezés1as oszlop,kifejezés2as oszlop,…• FROM tábla1alias1[INNER|LEFTOUTER|RIGHTOUTER]JOINtábla2alias2ONfeltétel2…[INNER|LEFTOUTER|RIGHTOUTER]JOINtáblaX aliasXONfeltételX
•WHERE feltétel• GROUPBYkifejezések• HAVINGfeltétel• ORDERBY kifejezések• LIMITkezdőadat,adatmennyiség
Select utasítás
Adatok lekérdezése (SQL)
2017.11.23. 32
• SELECT kifejezés1as oszlop,kifejezés2AS oszlop,…• Kifejezéseketadhatunkmeg,amelyekaz• adattáblaoszlopainakértékeiből,• konstansokból,• függvényhívásokból(gyáriéssaját)• műveletekbőlállnak• Azelőállítottértékheztetszőlegeselnevezéstkapcsolhatunk
Select – Elővettadatoklistája
Adatok lekérdezése (SQL)
2017.11.23. 33
• FROM tábla1alias1[INNER|LEFTOUTER|RIGHTOUTER]JOINtábla2alias2ONfeltételek2…[INNER|LEFTOUTER|RIGHTOUTER]JOINtáblaXaliasX ONfeltételekX• Egylekérdezésbenegyvagytöbbtáblábólisvehetünkelőadatokat• DESCARTESszorzatot(mindensor– mindensorral)• Adhatunkmegösszekapcsolásifeltételeket JOIN
FROM– Honnanvesszükelő
Adatok lekérdezése (SQL)
2017.11.23. 34
• Kiválogathatjuk:• csakazösszekapcsolásifeltételeknekmegfelelősorokat(INNERJOIN)• abaloldalitáblasoraithozzákapcsolvaajobboldalitáblasoraitamelyekmegfelelnekazösszekapcsolásifeltételnek(LEFTOUTERJOIN)• ajobboldalitáblasoraithozzákapcsolvaajobboldalitáblasoraitamelyekmegfelelnekazösszekapcsolásifeltételnek(RIGHTOUTERJOIN)
FROM– Honnan
Adatok lekérdezése (SQL)
2017.11.23. 35
• WHERE feltétel• Azadattáblákbóltetszőlegesfeltételekmenténválogathatunksorokat• Afeltétel eredményeegylogikaiérték(igaz/hamis),amelytovábbikifejezésektetszőlegesösszekapcsolásábólállhat• Például:WHEREtabla1.attributum2=10andtabla2.attributum3>tabla1.attributum2
WHERE– Milyenfeltétleknekmentén
Adatok lekérdezése (SQL)
2017.11.23. 36
• GROUPBYkifejezések• Összegzések, statisztikákelőállítása• Akövetkezőkérdésekreadottválasz:• Hányolyansorvan…COUNT• Mennyiazösszegea…SUM• Mennyiazátlaga…AVG• Továbbistatisztikaifüggvények
• Akifejezésekáltalalkotottcsoportonkéntkapjukaválaszt• ASELECT utáncsakstatisztikaifüggvényekésaGROUPBYkifejezési szerepelhetnek
GROUPBY- csoportosítás
Adatok lekérdezése (SQL)
2017.11.23. 37
• HAVING feltételek• Acsoportosítássoránelőállítottadatokbólválogathatunkafeltételmentén• Azeredménybenazokacsoportokjelennekmeg,amelyekelegettesznekaHAVINGutánszereplőfeltételeknek• Afeltételtipikusanacsoportosítássalelőállítottvalamelystatisztikaiértékrevonatkozik• Példa:Azoncsoportokmegjelenítéseamelytöbbmint5sorbólálltössze:HAVINGCOUNT(ID)>5
HAVING– csoportokszűrése
Adatok lekérdezése (SQL)
2017.11.23. 38
• ORDERBY kifejezések• Adatoksorbaállításakifejezésekmentén• Azegyeskifejezésekesetébenmegadhatjuk,hogymelyekmenténállítjuknövekvő(ASC)illetvecsökkenő(DESC)sorrendbeazadatokat
• Példa:ORDERBYSZERVEZETASC,FIZETESDESC
ORDERBY– eredménysorbaállítása
Adatok lekérdezése (SQL)
2017.11.23. 39
• LIMITkezdőadat,adatmennyiség• Gyakranfordulelő,hogyazeredménynagymennyiségűadatottartalmaz,amitegyszerrenemlehetmegjeleníteniaképernyőn,ilyenkorlapozásitechnikátalkalmazunk• Megadhatjuk,hogyazeredményvalamelysorátóladottsormennyiségettartalmazzonazeredmény• Adatbáziskezelőszervertőlfüggőenennekszintaktikájaváltozhat(OracleesetébenROWNUM)
LIMIT– szegmentálás
Adatok lekérdezése (SQL)
2017.11.23. 40
• Nagyadatmennyiségesetébennemmindegy,hogymilyensorrendbenhajtjavégrearendszerazeredményösszeállítását
• Alapvetőenkétféleoptimalizálásimódotkülönböztetünkmeg• Szabályalapú• Költségalapú
• Végrehajtásitervekkészítése,kiértékelése
Lekérdezésekoptimalizálása
Relációs adatbázisok
2017.11.23. 41
• Mindenadatbázisháttérműveletnekmegvanaprioritása• Indexekretámaszkodik(nemkellvégigolvasniatáblákat)• Full table scan (teljestáblaolvasás– nincsmegfelelő index)• Indexscan (indexolvasásmajdcsakazindexbenmegtaláltsorokelővétele)
• Atáblákösszekapcsolásáhoztöbbféletechnikátishasználhat• NESTEDLOOP(összefésüliakéttáblasorait)• SORT-MERGE(atábláksorbaállítottsoraitfésüliössze)• HASHJOIN(kihasználjaaSORT-MERGEalgoritmuskarakterisztikáit,azazonosértékekegymásmelletiségét,csoportosíthatóságát)
Azoptimalizálástechnikákratámaszkodik
Lekérdezések optimalizálása
2017.11.23. 42
• Mindenadatbázisműveletnekmegvaaprioritása
• Alekérdezőmotormeghatározzaazeredményelőállításáhozszükségesfeldolgozásiműveleteket
• Aműveletekprioritásaalapjánazadatokminőségétőlfüggetlenülállítjasorbaakülönbözővégrehajtásiterveket
Szabályalapúoptimalizálás
Lekérdezések optimalizálása
2017.11.23. 43
• Alkalmazásáhozadatminőségistatisztikákravanszükség(mennyiség,eloszlás,stb.)
• Mindenadatbázisműveletnekbecsülhetőaköltségestatisztikákalapján
• Alekérdezőmotormeghatározzaazeredményelőállításáhozszükségesfeldolgozásiműveleteket
• Azoptimalizáló• meghatározzaaműveletekköltségétazadatokminőségétőlfüggően
• összegeziabekerülési költségeketésezalapjánállítjasorbaavégrehajtásiterveket
Költségalapúoptimalizálás
Lekérdezések optimalizálása
2017.11.23. 44
Forrás:Oracle.com
Lekérdezések optimalizálása
2017.11.23. 45
Forrás:Oracle.com
Lekérdezések optimalizálása
2017.11.23. 46
Adattáblákmeghatározása
ID Név Beosztás Szervezet Törölt
1 Kiss János Könyvelő 1 Hamis
2 NagyBéla Informatikus 2 Hamis
3 … … … …
ID Név Leírás Törölt
1 Pénzügy Pénzügyiés … Hamis
2 Informatika Informatikai… Hamis
3 … … …
SzervezetekSzemelyek
ID Név Beosztás Szervezet Szervezetleírása
Törölt
1 Kiss János Könyvelő Pénzügy Pénzügyiés … Hamis
2 NagyBéla Informatikus Informatika Informatikai… Hamis
3 … … … …
Szemelyekésszervezetek
Normalizálás Redundanciákkiszűrése
Relációs adatbázisok tervezése
2017.11.23. 47
• Azadatlekérdezésiigényekhatározzákmegazalkalmazandóindexeket• adattartalom• csoportosítás• sorbaállítás
• Egyoszloposvagytöbboszloposindex?• Egyadatelővételiműveletesetébenegyindexalkalmazható• Többoszloposindexakkoralkalmazandó,hatöbboszlopratörténikaszűrés
• Hatöbboszlopadataiszerepelnekaszűrésifeltételekben,azoptimalizálóalegmegfelelőbbnektaláltindexetalkalmazza
• Minéltöbbazindexannállassúbbazadatlétrehozásésmódosítás
Indexekmeghatározása
Relációs adatbázisok tervezése
Köszönöm afigyelmet!
48