Adatbázisok kliens-szerver arhitektúrája. Copyright, 1996 Dale Carnegie & Associates, Inc.



Hasonló dokumentumok
Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

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

Adatbázisok biztonsága

Adatbáziskezelés Delphi 5 alatt. Bese Antal

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

A könyv tartalomjegyzéke

Adatbázis rendszerek II. Adatbázis elérése C# kliens programból ADO.NET API-n keresztül

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Kliens oldali SQL-API

Database Systems II. ZH összefoglaló

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

Az SQL*Plus használata

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

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

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL

A TANTÁRGY ADATLAPJA

Adatbázis rendszerek. dr. Siki Zoltán

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.

Java programozási nyelv 11. rész Adatbázis-programozás

MDAC - Microsoft Data Access Components

Adatbázis kezelő alkalmazá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ázis rendszerek 7. előadás State of the art

Alkalmazás technológiai frissítés migrációs és üzemeltetési tapasztalatok

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

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

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

DB2 Connect: DB2 Connect kiszolgálók telepítése és konfigurálása

AdoDB a gyakorlatban

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Bevezetés: az SQL-be

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

SZOFTVER = a számítógépet működtető és az azon futó programok összessége.

Iman 3.0 szoftverdokumentáció

Adatbázis-kezelés ODBC driverrel

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

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv:

II. év. Adatbázisok és számítógépek programozása

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

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

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

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

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

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

PRECÍZ Információs füzetek

Tartalom. Történeti áttekintés. Történeti áttekintés Architektúra DCOM vs CORBA. Szoftvertechnológia

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

Java és web programozás

A triggerek tárolt eljárások, melyek elsüt események hatására indulnak. Ilyen elsüt esemény lehet egy táblára vonatkozó INSERT parancs DELETE parancs

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

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

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

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

ÜZLETI I TELLIGE CIA - VIZUALIZÁCIÓ

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

április 24. INFO Savaria április 24. INFO Savaria április 24. INFO Savaria

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

Irányítástechnika Elıadás. PLC-k programozása

B IT MAN 65/1. Adatbázis Rendszerek II. Ellenőrző kérdések APLSQL B IT MAN. v:

SQL/PSM kurzorok rész

Java és web programozás

Microsoft SQL Server telepítése

Adatstruktúrák Algoritmusok Objektumok

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:

Osztott alkalmazások fejlesztési technológiái Áttekintés

Adatbázisok és adattárházak az információs rendszerek adatkezelői

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

A relációs adatmodell

Vizuális programozás gyakorlat

Projekt beszámoló. NEWSIT News basedearlywarning System forintradaytrading: Hír alapú Korai Figyelmeztető Rendszer Napon belüli Kereskedéshez

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

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1

Adatbázis rendszerek I.

A.NET keretrendszer (.NET Framework) három alapvetõ összetevõbõl áll:

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz

Informatikai alapismeretek Földtudományi BSC számára

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Oracle Audit Vault and Database Firewall. Gecseg Gyula Oracle DBA

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

HRdoc+ Rendszerismertető. Számítástechnikai és Szolgáltató Kft. Tel.: H-2051 Biatorbágy, Viola u. 38.

Operációs rendszerek. A Windows NT felépítése

Adatbázis alapú rendszerek (2015 tavaszi félév) Előadás

KÉPZÉS NEVE: Informatikai statisztikus és gazdasági tervezı TANTÁRGY CÍME: Adatbáziskezelés III. (elmélet+gyakorlat) Készítette: Kupcsikné Fitus Ilona

Operációs rendszerek


ADATBÁZISOK ADATBÁZIS-KEZELŐ RENDSZEREK. Debrenti Attila

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

Programozás alapjai Bevezetés

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Haladó DBMS ismeretek 1

Földmérési és Távérzékelési Intézet

Átírás:

Adatbázisok kliens-szerver arhitektúrája Copyright, 1996 Dale Carnegie & Associates, Inc.

Az osztott feldogozást azért vezették be, hogy minikomputerekbıl álló rendszer tudja elvégezni ugyanazt a munkát, amit egy központi számítógép. Az adatokat a szerver (adatbázis-szerver) tárolja, az alkalmazások a kliens számítógépeken futnak. A szerver egy erıs számítógép kell legyen, mely több kliens számítógéptıl kap adatokat tárolásra, illetve lekérdezéseket, azért, hogy feldolgozza (processzálja) ıket, majd visszaküldje a kért adatokat a szerverrıl a kliens számítógépnek. A kliens számítógép lehet gyengébb is.

Az adatok helyességére vonatkozó feltételeket ajánlott a szerveren megszorítások formájában megadni és az adatbázis szerverre bízni ezek ellenırzését. Ha az adatok helyességének az ellenırzését a kliensen végeznénk, és egy felhasználó ODBC-n keresztül vagy OLE DB Provider-en keresztül férne az adatbázishoz, akkor tudna helytelen adatot az adatbázisba beszúrni, de mivel a szerverre bíztuk az adatok helyességének az ellenırzését, nem kerülhetnek semmiképp helytelen adatok az adatbázisba.

Eddig csak a direkt SQL-el foglalkoztunk SQL parancsok bekérésére és végrehajtására alkalmas SQL interpreter az alkalmazások esetében az SQL parancsok valamilyen szoftverfejlesztı eszközzel elkészített eljárások vagy függvények részeként lesznek felhasználva. Ezeket az alkalmazásokat általában valamilyen ún. befogadó nyelven (például C, Java, Cobol, Visual Basic, Delphi, Visual C++, stb.) készítik és egyes függvények vagy eljárások törzsében SQL utasításokat helyeznek el.

Kliens oldal feladatai: Össze kell győjtse az összes szükséges információt, mielıtt kérelmet küldene a szervernek; A kliens csak a lekérdezések eredményeivel foglalkozzon, ne az alaptáblákkal. A lekérdezést hagyja a szerverre és csak az eredmény relációval dolgozzon. A szerver gyorsabb a lekérdezésekben, így kisebb táblákat kell szállítani a hálózaton; elvégezze az összes adat-kezelési mőveletet; az információ és az adat formázását a raportokban; felelıs az összes adat kiíratásáért a felhasználó felé;

A szerver oldal feladatai: Mivel task orientált, képes kell legyen a mőveletek gyors elvégzésére; Nagy mennyiségő információ tárolása, módosítása, gyors keresés; Adatok helyességének az ellenırzése; A szerver létre kell hozza az eremények halmazát (result sets), amit a kliens alkalmazás kér; Elıfordul, hogy az adatbázis szervernek nincs felhasználói felülete, scriptet lehet csak futtatni; Nagyon fontos a biztonság, melyik felhasználó az adatbázis mely részéhez férhet hozzá;

Kliens-szerver szabványok SQL2 ben egy SQL alkalmazásnak egyszer egy CONNECT operációt kell végeznie, hogy bekötıdjön a szerverhez, mielıtt bármilyen adatbázis mőveletet végezne. Ha létrejött a kapcsolat, az alkalmazás, vagyis a kliens, kiadhatja az SQL parancsait és a szerver végrehajthatja. A szabvány megengedi, hogy egy SQL kliens, mely már be van kötıdve egy szerverhez, bekötıdjön egy másik szerverhez is. Ha létrejön a második kapcsolat, az elsı kapcsolat alvó (dormant) lesz.

A kiadott SQL parancsokat a második szerver hajtja végre, mindaddig, míg a kliens: visszaállítja az elsı kapcsolatot (SET CONNECTION paranccsal); egy más szerverhez kapcsolódik, amikor a második is alvó lesz. Egy adott pillanatban egy SQL kliensnek egy aktív kapcsolata van, és akárhány alvó kapcsolata lehet és minden parancs a klienstıl az aktív szerverhez irányul. Minden létrehozott kapcsolatot (legyen az aktív vagy alvó) meg kell szakítani a DISCONNECT mővelettel.

Kliens/szerver alkalmazások programozása Egy fontos része, hogy a relációs adatmodellen alapuló adatbázis szerver halmaz szintő (set-level) rendszer. Az alkalmazás programozó nem csak úgy használja a szervert, mint egy hozzáférési utat és rekord szintő kód írását, hanem, amennyire az alkalmazás megengedi, halmazokra bontja a lekérdezéseket, különben túl sok üzenet lesz. Üzenetek száma csökkenthetı a tárolt eljárások (stored-procedure) mechanizmus segítségével. Egy tárolt eljárás egy elıfordított program, mely a szerver oldalon kerül tárolásra.

A tárolt eljárást kliens meghívja egy REMOTE PROCEDURE CALL (RPC) segítségével. Ha többször kell ugyanazt az SQL parancsot végrehajtani, érdemes az SQL parancsot az AB mellett tárolt eljárás formájában tárolni, melyet az ABKR lefordít, meghatározza a végrehajtási tervet és optimalizálja. Ha karaktersorként kapja meg az ABKR az SQL parancsot, minden alkalommal le kell fordítsa, kidolgozza a végrehajtási tervet és optimalizálja. Sokkal hatékonyabb meghívni a tárolt, lefordított eljárást.

A tárolt eljárások elınyei: Egy eljárás megosztható több kliens között; Jobb biztonság: bizonyos felhasználóknak megadjuk a jogot, hogy meghívja ezeket, de ne változtathasson direkt az adatokon; Optimalizálás végrehajtható ezen eljárások megírásakor, nem futtatáskor; Elrejthetık a felhasználó elıl a rendszer, illetve adatbázis specifikus részletek, így nagyobb adatfüggetlenséget biztosítva.

A tárolt eljárások hátrányai: nincs szabvány, minden rendszer másképp oldja meg. Az Oracle a PL/SQL nyelvet adja, mely egy procedurális kiterjesztése az SQL-nek harmadik generációs nyelvek jellemvonásaival (lásd az Oracle dokumentációt). Az MS SQL Server pedig a TRANSACT- SQL-t (lásd az MS SQL Server dokumentációt).

Ha a lekérdezéseket tárolt eljárásokkal oldjuk meg, nagy a hatékonyságuk, viszont nem portábilisak (hordozható). Ha kicseréljük az ABKR-t, a tárolt eljárásokat át kell írjuk. Ha az SQL parancsokat a kliens alkalmazásban írjuk meg, akkor az ABKR-t kisebb munkával lecserélhetjük. Kérdés, hogy a hatékonyság a célunk, vagy a hordozhatóság?

A három szintő programozási modell esetén, mely az adat hozzáférési réteg (Data Access Layer - DAL), az üzleti logika réteg (Business Logic Layer - BLL) grafikus felhasználói felület (Graphical User Interface GUI) a tárolt eljárások átvehetik a BLL feladatát és a DAL csak tárolt eljárások meghívásából áll. Ha nem használunk tárolt eljárásokat, akkor a DAL tartalmazza az összes SQL parancsot és az adatokat a BLL-nek már objektumok halmazaként vagy tömbök segítségével adjuk át, mely az alkalmazás logikáját programozza be. Ha egy alkalmazásnak vagy egy Internetes felülete és egy Windows-os felülete is, használhatják ugyanazt a BLL-t, vagy ugyanazokat a tárolt eljárásokat.

Befogadó nyelvbıl SQL Beágyazott SQL programba épített SQL parancsok; SQL API (Application Programmming Interface) vagy CLI (Call Level Interface) meghív speciális függvényeket, hogy az adatbázishoz hozzáférjen.

Beágyazott SQL a programozó feladata az adatfeldolgozó algoritmusnak a befogadó nyelven való megfogalmazása és a beágyazott SQL utasítások programba szerkesztése. Ezután a programot egy ún. elıfeldolgozó (prekompilátor) program átalakítja úgy, hogy a programba beágyazott SQL utasításokat a befogadó nyelv utasításaira alakítják. A folyamat során létrehozott befogadó nyelvi utasítások meghívhatnak például olyan függvényeket, amelyek paraméterükben egy SQL utasítást várnak karakterlánc formában és képesek a paraméterben kapott SQL utasításokat végrehajtani.

Ezután a tisztán befogadó nyelven írt forrásprogramot a befogadó nyelvi fordító lefordítja. Az elkészült modulokat össze kell szerkeszteni az adatbázis-kezelı rendszer gyártója által forgalmazott programkönytárakkal, melyek tartalmazzák az elıbb említett függvények implementációját, amelyek képesek karakterlánc formájában leírt SQL utasítások végrehajtására. Oracle adja a PRO*C/C++, PRO*CoBoL, PRO*Fortran elıfordítókat. Az MS SQL Server is ad C elıfordítót.

Az SQL nyelv adatmodellje lényegesen különbözik egy hagyományos programozási nyelv adatmodelljétıl. Az SQL magját a halmazorientált relációs adatmodell képezi, nem támogatja a tömb, mutató fogalmat a programozási nyelvek az elemi adattípusokat és a típuskonstruktorokat támogatják csak, a halmaz fogalmát nem. Ahhoz, hogy kommunikálni tudjanak egymás között a befogadó nyelv és az SQL szükség van egy interfészre. Az adatbázis eléréséért felelıs SQL utasítások és a befogadó nyelven megírt alkalmazói program utasításai közti adatcsere a befogadó nyelven deklarált változókon keresztül történhet, ezeket megosztott eléréső változóknak nevezzük.

Pelda Diákok (BeiktatásiSzám, Név, SzemSzám, Cím, SzületésiDatum, CsopKod, Átlag); Csoportok (CsopKod, Evfolyam, SzakKod); A deklarációs rész a következı: EXEC SQL BEGIN DECLARE SECTION; char CsopK[3], int Ev, char SzakK[2]; char SQLSTATE[6]; EXEC SQL END DECLARE SECTION;

void beolvascsoport() { EXEC SQL BEGIN DECLARE SECTION; char CsopK[3], int Ev, char SzakK[2]; char SQLSTATE[6]; EXEC SQL END DECLARE SECTION; /* bekér a felhasználótól egy csoport kódot,egy évfolyamot és egy szak kódot és azokat eltárolja a CsopK, Ev, illetve SzakK változókban */ EXEC SQL INSERT INTO Csoportok (CsopKod, Evfolyam, SzakKod) VALUES (:CsopK, :Ev, :SzakK); }

SELECT SQL lekérdezések általában nem ágyazhatók be mivel egy halmazt adnak vissza eredményül, és a legtöbb programozási nyelv ezt nem tudja kezelni. Megoldás: Az egyetlen sort eredményezı lekérdezések a lekérdezés eredményeként létrejött eredménysort eltárolhatják változókba, az eredménysor egyes komponensei külön-külön változókba lesznek elhelyezve. Egy olyan lekérdezésnek, amely egynél több sort (sorhalmazt) ad vissza eredményül egy sormutatót definiálunk. A sormutató befutja az eredményreláció összes sorát és egy-egy eredménysor egyes komponenseit külön-külön változókba elhelyezve juttatjuk el az adatokat a befogadó programnak.

Egyetlen sort eredményezı lekérdezések: void CsoportAtlag () { EXEC SQL BEGIN DECLARE SECTION; char CsopK[3], real CsopAtlag; char SQLSTATE[6]; EXEC SQL END DECLARE SECTION; /* bekér a felhasználótól egy csoport kódot, és eltárolja a CsopK változóban */ EXEC SQL SELECT AVG(Atlag) INTO :CsopAtlag FROM Csoportok WHERE CsopKod = :CsopK; /* kiíratjuk a CsopAtlag értékét, ha az SQLSTATE nem jelez hibát */ }

több sort eredményezı lekérdezések # define NINCS_TOBB-SOR! (strcmp(sqlstate, "02000")) void KiirInfo3() { EXEC SQL BEGIN DECLARE SECTION; char nev[50]; char CsopK[3]; char cim [60]; char SQLSTATE[6]; EXEC SQL END DECLARE SECTION;

EXEC SQL DECLARE Info3Sorm CURSOR FOR SELECT CsopKod, Nev, Cim FROM Diákok, Csoportok WHERE Diakok.CsopKod=Csoportok.CsopKod and Evfolyam = 3 and (SzakKod= IR OR SzakKod= IM ); EXEC SQL OPEN Info3Sorm; while(1) { EXEC SQL FETCH FROM Info3Sorm INTO :CsopK, :nev, :cim; If (NINCS_TOBB_SOR) break; printf("%s %s %s\n", CsopK, nev, cim); } EXEC SQL CLOSE Info3Sorm; }

SQL API ODBC ( Open DataBase Conectivity ) Microsoft írta a Windows alkalmazásokhoz. Microsoft OLE DB provider, illetve ADO (ActiveX Data Objects); SAG : SQL Acces Group írta, ismert X/Open CLI néven is; IDAPI (Integrated Database Application Programing Interface) Borland, IBM, Novell, Wordperfect írta együtt; JDBC (Java Database Conectivity) - SUN.

Egy ilyen univerzális környezet (mint az ODBC vagy OLE DB) úgy jelenik meg, mint egy eljárás könyvtár, mely a következıket kell tartalmazza: Connect / deconect kapcsolatot létesít /megszakít egy adatforráshoz; SQL parancs küldése és végrehajtása; Annak a helynek a meghatározása, ahová az SQL eredményét vagy valami üzenetet küldeni kell; Beszámolás arról, hogy hogyan fejezıdött be egy SQL parancs végrehajtása hiba kódok; Ahhoz, hogy adat cserét tudjanak végezni, szükség van szabványos adattípusokra.

Az SQL parancsot karaktersorként kapja meg a szerver, analizálja (ellenırzi a helyességét), meghatároz egy végrehajtási tervet, optimalizálja azt (felhasználva információkat az adatbázisból, esetleg indexeket is használ), meghatározza a választ és visszaküldi a választ. Különbözı típusú driverek léteznek: Nem adatbázis szervernek megfelelı driver (Access, Foxpro, Excel, Btrieve, Paradox, DBase) az SQL parancsot maga a driver végzi el (keres az adatbázisban, küldi az eredményt); Adatbázis szervernek (Oracle, MS SQL Server) megfelelı driver. A driver ellenırzi az SQL parancsot, de végrehajtásra az adatbázis szerverhez küldi.