Adatbázis rendszerek 7. előadás State of the art Molnár Bence Szerkesztette: Koppányi Zoltán
Osztott adatbázisok
Osztott rendszerek Mi is ez? Mi teszi lehetővé? Nagy sebességű hálózat Egyre olcsóbb, és gyorsabb processzorok Alkalmazásának okai: Gazdaságosság (vs. Szuperszámítógép) Hatalmas számítási kapacitás Nagyobb megbízhatóság Különböző megoldások összekapcsolása (SOA) Kihívások, megoldások
Elosztott adatbázisok Fizikailag különböző helyen tároljuk az adatokat, logikailag azonban egységes Előnyök: Kommunikációs költség csökkenése Csomópont kiesése esetén is elérhető (robusztusabb) Moduláris tervezés, rugalmas konfigurálás (skálázhatóság) Egyszerűbb karbantartás Hátrányok: Bonyolultabb rendszer Többféle hardver és szoftver megoldás Bonyolult jogosultság kezelés
Adatbázisok a felhőben
A felhő Mi az a felhő? A felhő modelljei: IaaS (Infrastrktúra, mint szolgáltatás) Amazon EC2, Windows Azure VM, Google Compute Engine PaaS (Platform, mint szolgáltatás) Windows Azure, Google AppEngine, Cloud Foundry SaaS (Szoftver, mint szolgáltatás) Google Apps, Facebook, Microsoft Office 365, OnLive
A felhő
A felhő
Adatbázisok a felhőben Adatbázis virtuális gépen Oracle DB, PostgreSQL, MySQL, CouchDB,... Adatbázis mit szolgáltatás Amazon Dynamo, Google App Engine Store, Microsoft SQL Azure
Adatbázis hozzáférés
Szabványos meghajtók Cél: adatbázis és operációs független módon az adatbázisok kezelése Szabványos meghajtók (driver) Nem csak adatbázisokhoz, de fájlokhoz is hozzáférhetünk (pl. CSV, XLS, stb...) ODBC (Open Database Connectivity): MS által támogatott JDBC (Java Database Connectivity) FDO (Feautre Data Objects)
Szabványos meghajtók C/C++ Matlab, PHP, Ruby,... Java,.NET,... Meghajtó (ODBC, JDBC, FDO,...) PostgreSQL, MySQL,... Microsoft Jet (Access) CSV, egyéb... Téradatok, Téradatbázisok (FDO esetén)
Adatbázis elérés Matlab-ból Database Toolbox ODBC és JDBC támogatás Táblák mátrixba fel- és letöltése Database Explorer App
Adatbázis elérés Matlab-ból (JDBC) % 1. JDBC drivert letölteni, pl.: PostgreSQL: http://jdbc.postgresql.org/download.html % 2. JAR fájlt hozzá kell adni a classpth.txt-hez % 3. Beállítani a kapcsolódáshoz rendelt lejárati időt (opc.) Logintimeout(5); setdbprefs('datareturnformat','cellarray'); % Kapott adatok típusa % 4. Kapcsolódás az adatbázishoz conna=database('database', 'username', 'password',... 'org.postgresql.driver',... 'jdbc:postgresql://localhost/'); % 5. Ellenőrizzük, hogy a kapcsolat sikeres volt-e (opc.) ping(conna);
Adatbázis elérés Matlab-ból (JDBC) % 6. Lekérdezés futattása selcols = ['packetid, b0, b1, b2, b3, b4, b5, b6']; cursora=exec(conna, [' select ' selcols ' from exp1']); % 7. Adatok megszerzése a lekérdezésből %cursora=fetch(cursora, 10); cursora=fetch(cursora); % 8. Adatok kinyerése DataMat = cursora.data; % 9. Kapcsolat és kurzor zárása (erőforrás felszabadítás) close(cursora); close(conna);
Félig-struktúrált adatbázisok
Jellemzők Nincs külön választva az adat és a séma Előnyök: A séma nem köti meg az információt Flexibilis formátum: a séma könnyen változtatható Az adat átvitel portolható A lekérdezések nem olyan hatékonyak, mint az SQL esetén pl.: OEM (Object Exchange Model), XML (Extnesible Markup Language)
XML Szabványos Formátuma Tag: <valami></valami> Önlezáró tag: <valami/> A tagek egymásba ágyazhatók, de nem lehetnek átfedők pl.: <valami1> <valami2> </valami2> </valami1> Egyetlen gyökér elem XML deklaráció, feldolgozó utasítások és megjegyzések XML Séma: XSD XHTML
XML Wikipédiáról: <?xml version="1.0" encoding="utf-8"?> <Recept név="kenyér" elk_idő="5 perc" sütés_idő="3 óra"> <cím>egyszerű kenyér</cím> <összetevő mennyiség="3" egység="csésze">liszt</összetevő> <összetevő mennyiség="10" egység="dekagramm">élesztő</összetevő> <összetevő mennyiség="1.5" egység="csésze">meleg víz</összetevő> <összetevő mennyiség="1" egység="teáskanál">só</összetevő> <Utasítások> <lépés>keverj össze minden összetevőt, aztán jól gyúrd össze!</lépés> <lépés>fedd le ruhával és hagyd pihenni egy óráig egy meleg szobában! </lépés> <lépés>gyúrd össze újra, helyezd bele egy bádog edénybe, aztán süsd meg a sütőben!</lépés> </Utasítások> </Recept>
XQuery Lekérdező nyelv XPATH FLWOR kifejezések: FOR $valt IN kif_csompont_halmaz LET $valt_egyetlen_ertek := kif_ertek WHERE kif_szelekcio ORDER BY kif_rendezes RETURN kif_eredmeny
XQUERY példa for $product in doc("catalog.xml")/catalog/product let $name := $product/name where $product/@dept = "ACC" order by $name return $name
Dokumentum orientált adatbázisok Dokumentumokat tárolunk Szabványos formátumban XML, JSON, stb... vagy bináris: PDF, MS Office, stb... Minden dokumentum egy egyedi azonosítóval rendelkezik (pl.: URI)
Házi rendszer
Kérdésfelvetések Elemzéshez adatra van szükség Adatforrás? Elemzés értéket képvisel Privacy személyiségi jogok Szolgáltató 3rd-party Man in the middle Free wifi HTTP/HTTPS Több helyen használt jelszó Több adatbázishoz való hozzáférés Direkt összekapcsolt account
Relációs adatbázis séma diagram
Elemzési lehetőségek Házi statisztika Beadott/Átnézett feladatok száma Osztályozás: átlag, min, max, sorsolás ZH statisztika Javított dolgozatok száma Osztályzás: átlag, min, max A/B csoport: db, nehézség Házi-ZH korreláció Házi beadási időpont és minőség közti korreláció Idő alapú statisztika (aktivitás) Lakhely, évfolyam, nemek, szobatársak szerinti statisztika GPS, IP alapú statisztika Platform, böngésző statisztika
Lekérdezések Hallgatók száma: 168 [83] [75] [5] [4] [1] Beadott 1. feladatok száma: 160 (529 verzió) 1. feladathoz csatolt fájlok száma: 152 (296 verzió) Átnézett 1. feladatok száma: 160 Beadott 2. feladatok száma: 3 (3 verzió) Átnézett 2. feladatok száma: 0 Üzenetek száma: 50 Javított ZH-k száma: 101 min: 11 max: 49 átlag: 35.42 Oldalletöltés: 12163 hit Bináris adatmennyiség: 205.95 MB
Aktivitás
Köszönöm a figyelmet! Adatbázis rendszerek