Adatbázisok és adattárházak – az információs rendszerek adatkezelői (Klárné Barta Éva) Részlet az Adatbáziskezelés és vállalati információs rendszerek című jegyzetből.
Az első adatfeldolgozó rendszerek néhány file-ban tárolt kis mennyiségű adattal dolgoztak, amely csak egyetlen számítógépen volt elérhető. Később az adatok mennyisége és bonyolultsága egyre növekedett, az adatokat használó felhasználók számával együtt. Az adatokat már nemcsak tárolták és visszakeresték, hanem különböző alkalmazások segítségével feldolgozták, elemezték azokat. A számítógépes világhálózat létrejöttével pedig felmerült az igény, hogy a tárolt adatokhoz a világ bármely pontjáról hozzá lehessen férni. Ezek az elvárások egyre sokrétűbb adatkezelő eszközök kidolgozását igényelték, így alakultak ki a ma széleskörűen használt adatbáziskezelő rendszerek, majd a különböző adatforrásokból származó adatokat integráló adattárházak.
ADATBÁZISOK ÉS ADATBÁZISKEZELŐ RENDSZEREK A vállalati információs rendszerekhez tartozó nagymennyiségű adatot adatbázisokba szervezve tárolják a számítógépek háttértárain. Az adatbázis együtt tárolt, egymással összefüggő adatok rendszere. Az adatok meghatározott szerkezet szerint kerülnek tárolásra, ez a szerkezet az adatbázis struktúrája. A struktúra leírását szintén az adatbázisban tárolják, ezt az adatbázis sémájának nevezzük, a séma leírására szolgáló adatokat szokás metaadatoknak is hívni. Az adatbázisok file-okból épülnek fel, de speciális szerkezetük miatt hagyományos file-kezelő rendszerekkel nem lehet a bennük tárolt adatokhoz hozzáférni. Az adatbázisok kezelésére adatbáziskezelő rendszereket fejlesztettek ki. Az adatbáziskezelő rendszer (ABKR) egy programcsomag (software), amely tulajdonképpen egy bonyolult file-kezelő rendszer. Ennek része a tényleges adatkezelést végző program, az adatbázis motorja (engine). A korszerű adatbáziskezelő rendszerek nagyrészt interaktív módon működnek, vagyis párbeszédet folytatnak a felhasználóval, aki megfogalmazza kéréseit, és a program azonnal végrehajtja azokat. A felhasználó, illetve azok az alkalmazások, amelyek segítségével a felhasználó az adatbázisban tárolt adatokat feldolgozza, csak az adatbáziskezelő rendszeren keresztül férhetnek hozzá az adatbázisban tárolt adatokhoz.
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
1. ábra: A felhasználók az adatbáziskezelő rendszeren keresztül érik el az adatbázisban tárolt adatokat Egy adatbáziskezelő rendszer legfontosabb feladatai: − − − − −
az adatbázis létrehozása az adatok karbantartása az adatok lekérdezésének biztosítása a felhasználók munkájának szinkronizálása az adatok védelme
Az adatok karbantartásán az új adatok felvitelét, a meglévő adatok módosítását, vagy törlését értjük. A legtöbb adatbáziskezelő rendszer a karbantartó műveleteket tranzakciókként kezeli. Egy tranzakció egy felhasználó által végzett karbantartó műveletek sorozatából áll, ezeknek a műveleteknek az eredménye nem kerül be ténylegesen az adatbázisba egészen addig, amíg a felhasználó egy COMMIT utasítás segítségével meg nem erősíti azokat. Ezzel egyben lezárja a tranzakciót. A következő karbantartó utasítással egy új tranzakció kezdődik. Amíg a felhasználó nem zárta le a tranzakciót, alapértelmezés szerint a többi felhasználó az adatok eredeti állapotát látja. Ha a felhasználó nem kívánja megerősíteni a tranzakció során elvégzett műveleteket, akkor a ROLLBACK utasítás segítségével törölheti a tranzakció során végrehajtott adatváltoztatásokat. Az adatbáziskezelő rendszerek lehetővé teszik az AUTOCOMMIT beállítását, ekkor minden karbantartó utasítás után automatikusan megtörténik a COMMIT.
2
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
A felhasználók munkájának szinkronizálására akkor van szükség, ha az adatbázis adataihoz egyszerre több felhasználó is hozzáférhet. Ekkor az adatbáziskezelő rendszernek biztosítania kell, hogy ne történjen adatvesztés, vagy hibás adatfelvitel. Ugyanazt az adatot egy időben több felhasználó is kiolvashatja az adatbázisból, ez nem okoz semmilyen problémát. Ha azonban ugyanazt az adatrekordot egy időben több felhasználó is módosítja, akkor a módosítások közül csak az kerül az adatbázisba, amelyiket utoljára fejeztek be, a többi felhasználó módosítása felülíródik. Ezért nem lehet megengedni, hogy egy adatrekordot egyszerre többen módosítsanak. Ennek legelterjedtebb módszere a rekord zárolása. A módosítás előtt a rekordot zárolni kell, a módosítás befejezése után pedig a zárolást fel kell oldani. Amíg egy rekord zárolva van, addig azt más felhasználó nem zárolhatja, így nem is módosíthatja. Szükség esetén egy adatbázisban nagyobb egységek is zárolhatók, akár a teljes adatbázis is. Kevésbé elterjedt szinkronizációs eljárás az, ha az adatbáziskezelő rendszer megengedi egy rekord módosítását több felhasználónak is egyszerre, de amikor a felhasználó a módosítást vissza kívánja írni az adatbázisba, ellenőrzi, hogy a rekord kiolvasása óta megváltozott-e a tárolt rekord tartalma. Ha igen, nem engedélyezi a módosítás visszaírását. Ekkor a rekordot újra ki kell olvasni és újra el kell végezni a módosítást. Az adatbázisban tárolt adatokat több szempontból is védeni kell. Ki kell szűrni az adatfelvitel során az esetleges hibás adatokat, védekezni kell az illetéktelen felhasználók ellen, valamint meg kell védeni az adatbázis adatait az adathordozók fizikai sérüléseitől. Az adatbázisba bekerülő adatokra vonatkozó megszorításokat részben az adatbázis sémájában lehet leírni, részben pedig az adatkarbantartásra szolgáló alkalmazásban. Ilyen megszorítások lehetnek például az értékhatárok, vagy az értékkészlet megadása, továbbá megkövetelhetjük az adatok közötti bizonyos összefüggések meglétét is. Az adatbáziskezelő rendszer nem enged olyan adatot bevinni az adatbázisba, amely nem felel meg a sémában előírtaknak (típus, méret, megszorítások), vagy nem teljesülnek rá az összefüggések, például egy dolgozó munkahelye csak olyan osztály lehet, amelyik a szervezeti felépítésben szerepel. Az adatokhoz történő illetéktelen hozzáférések megakadályozására a felhasználók azonosítót kapnak, és csak jelszó segítségével férhetnek hozzá az adatbázisban tárolt adatokhoz. A felhasználói névhez különböző jogok rendelhetők, például lekérdezési jog, vagy módosítási jog. Az adatbázisban található objektumokhoz szintén rendelhetők jogok. A felhasználó tényleges jogát egy objektum esetén a felhasználóhoz rendelt jogok és az objektumokhoz rendelt jogok metszete adja, vagyis például csak akkor módosíthatja az objektumban tárolt adatokat, ha rendelkezik módosítási joggal, és az objektumon is engedélyezett a módosítás. Az objektumokhoz rendelt jogok segítségével bizonyos objektumok elrejthetők a felhasználók elől, így minden felhasználó az adatbázisnak csak azon részét látja, amelyikre a munkájához szüksége van. Mivel az adatbázisok bonyolult belső szerkezet szerint épülnek fel, operációsrendszer szintről többnyire nem értelmezhető az adatbázisállományok adattartalma, tehát azok a felhasználók, akik nem jogosultak az 3
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
adatbázisba történő belépésre, operációs rendszer szintről sem tudnak hozzáférni az adatbázis adataihoz. Az adatbázisban tárolt adatokat meg kell védeni attól, hogy a számítógép valamely elemének meghibásodása, vagy programhiba miatt megsérüljenek, vagy akár teljesen megsemmisüljenek. Ennek legegyszerűbb módja az, ha az adatbázist alkotó fájlokról időről-időre biztonsági másolatot készítünk (teljes mentés). Ez a módszer azonban nem használható nagy adatbázisok esetén, és nem elegendő nagyon változékony adatbázisoknál sem (például banki alkalmazások). On-line mentés alkalmazása esetén a két teljes mentés között történő módosításokat egy külön állományba mentik, párhuzamosan a módosítás elvégzésével. Egy esetleges meghibásodáskor vissza kell tölteni az utolsó teljes mentést, majd átvezetni rajta az azóta történt módosításokat. Így gyakorlatilag a hiba bekövetkeztekor fennállt állapotot lehet visszaállítani, csak a le nem zárt tranzakciók módosításai vesznek el. Nagymértékben növeli az adatbiztonságot, ha az adatbázist több példányban tároljuk, más-más adathordozókon. Ezt az adatbázis tükrözésének nevezzük. Ilyenkor a módosításokat mindegyik példányon át kell vezetni. Nagyobb adatbázisok üzemeltetését nem lehet a felhasználókra bízni. Szükség van olyan személyre, vagy személyek egy csoportjára, aki az adatbázis működéséért felelős. Ő az adatbázis-adminisztrátor (DataBase Administrator, DBA). Az ő feladatai közé tartozik az adatbázis létrehozása, az adatbáziskezelő rendszer indítása, leállítása, a felhasználói jogok meghatározása és a fizikai adatvédelem. A software-piacon számos adatbáziskezelő rendszer található. Minden adatbázistípushoz saját adatbáziskezelő rendszer tartozik, egy adatbáziskezelő csak azokat az adatbázisokat tudja feldolgozni, amelyeket ugyanezzel a típusú adatbáziskezelő rendszerrel hoztak létre, ugyanis a különböző adatbázisok belső szerkezete nagymértékben eltér egymástól. Sok esetben ugyanannak az adatbáziskezelőnek a különböző verziói sem egyforma felépítésű adatbázisszerkezetet hoznak létre, így ha át akarunk térni egy másik verzióra, az adatbázist át kell konvertálni. Az adatbázisok belső felépítése, valamint az adatok elérési módja döntően befolyásolja az adatbáziskezelés sebességét. A különböző adatbáziskezelő rendszerek versenyének ez az egyik legfontosabb területe. A sebességek összehasonlítására úgynevezett benchmark teszteket végeznek, amelyek során nagy adatmennyiséggel nagytömegű tranzakciót és lekérdezést hajtanak végre. A vezető adatbáziskezelő rendszereket általában nemcsak egy platformra dolgozzák ki, hanem a legelterjedtebb operációsrendszerek mindegyikére (pl. Windows, UNIX, LINUX). Napjainkban a legelterjedtebb adatbázisok a relációs adatmodell szerint épülnek fel.
4
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
Adatmodellezés
Az adatmodellezés olyan eljárás, melynek során a valós világ tényeit és összefüggéseit tükröző adatok lényeges sajátosságait és lényeges összefüggéseit emeljük ki. Eredménye az adatmodell. Az adatbázisok mindig valamilyen adatmodellen alapulnak. Az adatmodelleket az alábbi jellemzők segítségével adjuk meg, írjuk le: Azokat a dolgokat, amelyek adatait le szeretnénk írni, egyedeknek, vagy objektumoknak nevezzük. Ezek lehetnek tárgyak, személyek, vagy akár események is. Például Hallgatók, Tantermek, Vizsgák. Az egyedek konkrét előfordulásai például "Kiss Jolán", "112-es terem", "2007.01.22-i Információs rendszerek vizsga". Egy adott egyed által képviselt összes előfordulás halmazát egyedhalmaznak nevezzük. Például a Hallgatók nevű egyedhalmaz az összes hallgatóból áll, a Terem nevű egyedhalmaz pedig az összes teremből. Az egyedeket tulajdonságokkal, attribútumokkal írjuk le. Az adatmodellezés fontos lépése, hogy az egyed számtalan tulajdonsága közül kiválasszuk azokat, amelyek számunkra lényegesek. Az adatmodellben csak ezek a tulajdonságok szerepelnek. Például egy hallgató tulajdonságai lehetnek a név, születési dátum, szak, évfolyam, testmagasság, szeme színe stb. Ha egy egyetemen hallgatói nyilvántartást készítenek, úgy ezek közül a név, születési dátum, szak, évfolyam tulajdonságokkal fogják jellemezni a hallgatókat, míg egy rendőrségi nyilvántartásban a név, születési dátum, testmagasság, szeme színe tulajdonságokat fogják használni. Amennyiben egy tulajdonság, vagy a tulajdonságok egy csoportja egyértelműen meghatározza, hogy az egyed melyik értékéről, vagyis az egyedhalmaz melyik eleméről van szó, akkor ezeket a tulajdonságokat kulcsnak, vagy azonosítónak nevezzük. Elvileg minden egyedhalmaznak van kulcsa, hiszen az egyedeket úgy határoztuk meg, hogy egymástól megkülönböztethetők legyenek. Így legrosszabb esetben az összes tulajdonság együtt alkotja a kulcsot. Ha nem tudunk kiválasztani olyan tulajdonságokat, melyek az egyedhalmaz elemeit egyértelműen meghatározzák, nagyon sok tulajdonság értékét kell megadni az egyértelmű azonosításhoz, akkor be kell vezetnünk egy olyan tulajdonságot - például sorszám, kódszám - amely ezt biztosítja. A Hallgatók egyedhalmazban például hallgatókódot rendelhetünk a hallgatókhoz, a termékeket pedig cikkszámmal látják el a könnyebb azonosítás végett. A hallgatónak a hallgatókód nem természetes tulajdonsága, épp így a cikkszám sem természetes tulajdonsága a terméknek. Ha a kulcs egyetlen tulajdonság, akkor egyszerű kulcsnak nevezzük, amennyiben több tulajdonság alkotja a kulcsot, akkor összetett kulcsról beszélünk. 5
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
A különböző egyedhalmazok kapcsolatban állhatnak egymással. Azokat a logikai összefüggéseket, amelyeket az egyedhalmazok közös tulajdonságai fejeznek ki, kapcsolatoknak nevezzük. Például a Hallgatók és a Vizsgák egyedhalmazok közötti kapcsolat lehet az, hogy kik vizsgáznak az adott napon a megadott tárgyból.
A kapcsolatoknak három típusát különböztetjük meg. Egy-egy típusú kapcsolat (1:1 kapcsolat) Az egyik egyedhalmaz egy eleméhez a másik egyedhalmaz pontosan egy eleme kapcsolódik. Például a vidéki önkormányzatok halmaza és a polgármesterek egyedhalmaza között egy-egy típusú kapcsolat van. 1: 1 tí pus ú ka p c s o la t
Egy-több típusú kapcsolat (1:N kapcsolat) Az egyik egyedhalmaz egy eleméhez a másik egyedhalmaz több eleme is tartozhat, de a másik egyedhalmaz egy eleméhez az egyik egyedhalmaz csak egy eleme tartozhat. Például a Raktárak és a Dolgozók közötti kapcsolatban egy raktárhoz több dolgozó is tartozhat, de egy dolgozó csak egy raktárban dolgozhat. 1: N t íp us ú ka pc s ol a t
6
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
Több-több típusú kapcsolat (N:M kapcsolat) Az egyik egyedhalmaz egy eleméhez a másik egyedhalmaz több eleme is tartozhat és ennek a fordítottja is igaz. Például az Áruk és a Szállítások közötti kapcsolat több-több típusú kapcsolat, hiszen egy szállítás során többféle árut is vihetnek, de egy áruféleséget több szállítással is szállíthatnak. N :M tí pus ú k a pc s ol a t
Az adatmodell elkészítése során meg kell adnunk az adatokra vonatkozó megszorításokat is, ezek szintén a séma részei lesznek. A legfontosabb megszorítástípusok: Kulcsok: a megszorítások között szokás megadni az egyedhalmazok kulcsát. Egyértékűségi megszorítások: megköveteljük, hogy egy egyedhalmazon belül egy adott tulajdonság értéke minden egyednél különböző legyen. Ennek speciális esetei a kulcsok, de nem azonosító tulajdonságnál is előfordulhat ilyen megszorítás, például egy hallgató egyedhalmaz kulcsa a hallgatókód, de a személyigazolvány-számnak is minden egyednél egyedinek kell lennie. Hivatkozásépség-megszorítások (referenciális integritás): megköveteljük, hogy egy hivatkozott érték szerepeljen az adatbázisban. Például egy hallgató nem vehet fel olyan tantárgyat, amely nem szerepel a tantárgyak egyedhalmazában. Értékkészlet-megszorítások: egy tulajdonság értékeit csak egy meghatározott halmazból veheti fel, például az érdemjegy csak 1, 2, 3, 4, 5 lehet. Általános megszorítások: tetszőleges követelmények, amelyeket az adatokkal szemben támasztunk. Például, egy dátum nem lehet későbbi az aktuális dátumnál.
7
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
Relációs adatmodell A relációs adatmodell az adatok táblázatos ábrázolásán alapul. Ebben az adatmodellben a reláció egy névvel ellátott táblázat. Egy táblázat sorai egy egyedhalmaz egyedeinek leírását tartalmazzák. Egy adatmodellben általában több egyedhalmaz szerepel (hallgató, oktató, tantárgy, terem, vizsga)), így több táblázatban kell leírni őket, ezek a táblázatok pedig kapcsolatban állnak egymással, hiszen ezért tartoznak egy adatmodellhez. Az egyedeket tulajdonságaikkal írjuk le, ezek a tulajdonságok alkotják a táblázat oszlopait. Például a Hallgató táblázat egyik oszlopa a név, a másik a születési dátum, stb. A táblázat struktúrájának leírása Egy relációs adatbázisban meg kell adnunk minden táblázat struktúrájának leírását. Ennek során rögzíteni kell az egyes oszlopok nevét, típusát és méretét. Egy oszlopban csak a típusának megfelelő adat tárolható. A legfontosabb adattípusok: − számok (numerikus adatok) − szövegek (karakteres adatok) − dátum, vagy idő adatok Az oszlopok mérete rögzített, nem függ a benne tárolt adat méretétől. Ha például a Név oszlop méretét 40 karakternek definiáljuk, akkor abban 0-tól 40 karakterig terjedő hosszúságú neveket tárolhatunk, de az oszlop mérete akkor is 40 karakter lesz, ha a leghosszabb név sem éri el ezt. Szintén a struktúraleírásban kell megadni az egyes oszlopokra vonatkozó megszorításokat is. Egy adatbázisban tárolhatók hosszabb összefüggő szövegek is, ezeket feljegyzés, vagy hosszú karakteres típusú mezőkbe lehet felvinni. Ennek az adattípusnak nincs meghatározott mérete. Multimédiás objektumokat – pl. képek, hang-file-ok – szintén elhelyezhetünk egy adattáblában, ezeket vagy hosszú karakteres mezőkben, vagy speciális OLE (Object Linking and Embedding) objektumokat tartalmazó mezőkben, vagy BLOB (Binary Large OBject) - nagyméretű bináris objektum - típusú mezőben kell tárolni.
Kulcsok Ahhoz, hogy a táblázatban szereplő egyedeket egyértelműen azonosítani tudjuk, a táblázatnak rendelkeznie kell kulccsal. Az adatmodell elkészítésekor rögzítenünk kell, hogy a lehetséges kulcsok közül melyiket fogjuk a tábla sorainak, vagyis az egyedeknek az azonosítására használni, ezt a kulcsot elsődleges kulcsnak, vagy primary key-nek nevezzük. Például a Hallgató táblában lehetséges kulcs a név és a születési dátum együttes megadása, de lehetséges kulcs a hallgató kód is. Az adatmodell
8
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
készítésekor meg kell adnunk, hogy melyiket fogjuk elsődleges kulcsként használni. A táblák közötti kapcsolatot sok esetben az biztosítja, hogy az egyik táblázatban benne szerepel a másik táblázat elsődleges kulcsa. Ezt a mezőt az első táblázatban idegen kulcsnak nevezzük.
Példa: ANYAG tábla Mennyiségi Egységár egység (Ft)
Cikkszám
Megnevezés
120306
Lemezcsavar
db
5
302564
Facsavar
db
4
523652
Alumínium lemez
db
1500
212121
Vaspor
kg
842
A példánkban a tábla neve ANYAG, a sorai egy-egy anyag leírását tartalmazzák, az anyagokat jellemző tulajdonságaikkal – cikkszám, megnevezés, mennyiségi egység, egységár – írjuk le, ezek a tábla oszlopai. A tábla elsődleges kulcsa a cikkszám.
KÉSZLET tábla Raktárszám
Cikkszám
Mennyiség
2100
120306
1000
2200
302564
5000
2100
302564
3500
2300
120306
1200
A KÉSZLET tábla elsődleges kulcsa a raktárszám és a cikkszám (összetett kulcs). Ebben a táblában benne szerepel az ANYAG tábla elsődleges kulcsa, vagyis a cikkszám. Itt a cikkszám idegen kulcs is, mert egy másik tábla elsődleges kulcsa. Ez a mező biztosítja a kapcsolatot a két tábla között, a KÉSZLET tábla adataiból nem tudjuk megmondani, hogy mi a 120306 cikkszámú anyag, és hogy a mennyiség miben értendő, csak az ANYAG tábla segítségével derül ki, hogy ez lemezcsavar és a mennyiség darab. Az idegen kulcs általában nem része az elsődleges kulcsnak, de – mint példánk mutatja -, az is lehet
9
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
A relációs adatbázisok legfontosabb típusai A legtöbb relációs adatbázis az alábbi két csoport valamelyikébe sorolható: − dBASE típusú adatbázisok − SQL alapú adatbázisok A dBASE típusú adatbázisok egyszerűbb felépítésűek, az adatbáziskezelő rendszerük is kevesebb funkciót lát el, így például az adatvédelmet a felhasználói programokba kell beépíteni. Általában kis adatbázisok kezelésére használják őket. A legelterjedtebb a dBASE III adatbázistípus. Az SQL alapú adatbázisok az SQL (Structured Query Language) nyelvet használják az adatok karbantartására, lekérdezésére. A vezető relációs adatbázisok ebbe a csoportba tartoznak, így az egyik legelterjedtebb adatbáziskezelő rendszer az ORACLE, továbbá a DB2, INFORMIX, SYBASE és a Microsoft Sqlserver-e. is. Ezek az adatbáziskezelők általában fejlett adatvédelmi rendszerrel és számos, a felhasználó munkáját segítő, vagy a bonyolult adatrendszerek kezelését lehetővé tevő funkcióval rendelkeznek. Vannak olyan dBASE típusú adatbázisok is, amelyek az SQL nyelv segítségével kezelhetők, ilyen például a dBASE IV. Többfelhasználós adatbázisok A nagyobb adatbázisok általában több felhasználó kiszolgálására jönnek létre. Ebben az esetben biztosítani kell, hogy az adatbázis adataihoz minden felhasználó hozzáférhessen. Ekkor az adatbázist egy központi gép (szerver) merevlemezein helyezik el, a felhasználók pedig egy lokális hálózaton keresztül érik el az adatbázisban tárolt adatokat. Az SQL alapú adatbáziskezelő rendszerek általában kliens-szerver architektúra szerint felépülő hálózatokon működnek, ami azt jelenti, hogy a központi gépen fut maga az adatbáziskezelő rendszer, a kliens gépeken pedig az alkalmazások. Az alkalmazások SQL parancsokat küldenek a központi gépnek, ott az adatbáziskezelő végrehajtja azokat, és az eredményt visszaküldi a kliensnek. Egy módosítás eredménye például az, hogy a módosítás sikeresen megtörtént, egy lekérdezés eredménye pedig a feltételeknek megfelelő adatok csoportja.
2. ábra: Kliens-szerver architektúra
10
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
Alkalmazás szerver (Application server) Nagy erőforrás igényű alkalmazásoknál célszerű több szintű hálózatot felépíteni. A legfelső szint az adatbázis-szerver szintje, ennek feladata az adatok kezelése, megosztása, a következő szint az alkalmazás-szerver(ek) szintje. Ezeken a szervereken futnak azok az alkalmazások, amelyek a bonyolult, nagy számításigényes adatfeldolgozásokat megvalósítják, vagyis az alkalmazások programját osztják meg a kliensek között. A legalsó szinten, a kliensek gépein csak az adatok bevitele, illetve az eredmények megjelenítése történik (front-end alkalmazások). Ez egyrészt erőforrás megtakarítással jár, mert a kliens oldalon nem követel meg erős gépeket, - növeli a biztonságot, másrészt gyorsítja az alkalmazások végrehajtását. A klienseknek éppúgy felhasználói névvel és jelszóval kell bejelentkezniük az alkalmazás-szerverre, mint kétszintű hálózatnál az adatbázis-szerverre. A felhasználókhoz hozzárendelhető, hogy mely alkalmazásokat futtathatják. Az adatbázisszerverre az alkalmazásszerveren futó alkalmazás jelentkezik be, ez a kliens elől elrejtve történik. A front-end alkalmazásoktól megkülönböztetendő, a háttérben futó, a felhasználó számára láthatatlan alkalmazásokat szokás back-end alkalmazásoknak nevezni.
3. ábra: Több szintű hálózat adatbázis-szerverrel és alkalmazás-szerverekkel Osztott adatbázisok Nagy adatbázisok esetén előfordulhat, hogy az adatok nem egyetlen számítógép merevlemezein helyezkednek el, hanem fizikailag különálló szervergépeken. Ezek a gépek egy-egy lokális hálózat központi gépei, és egymással is kapcsolatban állnak. Azok az adatbáziskezelő rendszerek, amelyek lehetővé teszik az osztott adatbázisok kezelését, biztosítják, hogy bármelyik lokális hálózatba kapcsolt felhasználó a fizikailag különböző gépek merevlemezein tárolt adatokat logikailag egyetlen adatbázisnak lássa.
11
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
Az osztott adatbázisok kezelésének egyik legnagyobb problémája a fizikailag különböző adatbázisokban végzett egyidejű, összefüggő módosítások kezelése. Ugyanis előfordulhat, hogy a módosítás sikeresen lezajlik az első adatbázisban, azonban hiba történik a második adatbázisbeli módosítás esetén. Ekkor az első adatbázisba a módosítások belekerültek, míg a másodikba nem. Így az adatok integritása már nem áll fenn. Ezért olyan megoldásra van szükség, amely garantálja, hogy az összefüggő módosítások minden adatbázisban megtörténjenek. Erre szolgál a két fázisú commit (two-phase commit) eljárás. . Az első fázisban a commit művelet nem kerül ténylegesen végrehajtásra, csak az előkészítése történik meg, melynek során az adatbáziskezelő rendszer meggyőződik arról, hogy nincs akadálya az adatok tényleges módosításának. Ha a tranzakcióban résztvevő minden adatbázisban sikeres volt az előkészítés, akkor a második fázisban megtörténik a tényleges commit végrehajtása. Ha az előkészítés során valamelyik adatbázis hibát jelez, akkor a második fázisban a tranzakcióban résztvevő összes adatbázisban megtörténik a tranzakció visszagörgetése, így az adatok konzisztensek maradnak.
4. ábra: Osztott adatbázis Internetes adatbázisok Az Internet használatának széleskörű elterjedésével megjelentek az Interneten keresztül elérhető adatbázisok, biztosítva azt, hogy egy adatbázishoz a kliensek a világ bármely pontjáról hozzáférhessenek. Az adatbázis továbbra is egy központi szerver gépen helyezkedik el, kliens lehet bármely olyan számítógép, amely Internet-eléréssel rendelkezik. A kommunikációhoz valamely Internetes protokollt használják fel. Az alkalmazások vagy Web-es böngésző program felületén futtathatók, vagy a JDBC (Java DataBase Connectivity) protokoll segítségével közvetlenül kommunikálnak az adatbáziskezelő rendszerrel.. Az 12
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
Internetes adatbázisok megjelenésével lehetővé vált, hogy az adatbázis és az adatbáziskezelő rendszer nem a felhasználó cég számítógépén, hanem egy szolgáltató, vagy az alkalmazást fejlesztő software-ház számítógépén kerüljön elhelyezésre, ott működjön. Így a cég mentesül a nagy értékű hardwareberuházás alól, továbbá nincs szüksége szakembergárdára a számítógépek és az adatbázisok üzemeltetéséhez. Az adatbázisadminisztrációt a szerver tulajdonosa végzi el, a cég felhasználói pedig Interneten keresztül futtathatják az alkalmazásokat, így végezhetik az adatok karbantartását, lekérdezését. Műveleti adatbázisok – OLTP rendszerek Amikor a vállalatok, bankok, kereskedőházak áttértek ügyviteli és termelési adataik számítógépes nyilvántartására, elsődleges céljuk az volt, hogy a tárolt adatok pontosan tükrözzék az adott cég aktuális állapotát (megrendelések, raktárkészlet, stb.). Az ilyen céllal kialakított adatbázisok úgynevezett operatív, vagy műveleti adatbázisok. A bennük tárolt adatok állandóan változnak, hiszen mindig az aktuális állapotot kell mutatniuk. Az adatbáziskezelő legfontosabb feladata a megbízható tranzakciókezelés, vagyis az adatok felvitelének, karbantartásának biztosítása. Ezért azokat az alkalmazásokat, amelyek az ilyen típusú adatbázisok adatkezelését végzik OLTP (On-Line Tranzaction Processing), On-Line tranzakció-feldolgozó alkalmazásoknak nevezzük. Döntéstámogató rendszerek – OLAP rendszerek A műveleti adatbázisokba óriási mennyiségű információ kerül felvitelre, ezeknek az adatoknak az elemzésével számos következtetést lehetne levonni a cég működésével kapcsolatban. Ehhez azonban nemcsak a pillanatnyi állapotot tükröző adatokra, hanem a múltbeli értékekre is szükség lenne. Az OLTP rendszerek legfontosabb feladata a tranzakció kezelés, ezért nem biztosítanak hatékony megoldást sem az idősorok tárolására, sem ezen adatok feldolgozására. Az információs rendszerek egy viszonylag fiatal ága, a döntéstámogató rendszerek (Decision Support System, DSS) hivatottak arra, hogy a folyamatokat időben vizsgálják, a múltbeli adatok felhasználásával próbáljanak következtetéseket levonni a jövőre nézve. Ezen rendszerek felhasználói általában a cégek vezetői. A döntéstámogató rendszerek nagy mennyiségű adattal dolgoznak, melyeket időponttal is el kell látni, hiszen nemcsak az aktuális állapotokat tükröző adatok, hanem a régebbiek is szerepelnek a rendszerben. Az itt tárolt adatok nem változnak, ezért nincs szükség a karbantartásukra, a tárolt adatok köre egyre bővül, bizonyos időközönként a műveleti adatbázisok adatai betöltődnek a rendszerbe. Természetesen a túl régi adatok, amelyekre már nincs szükség, kitörölhetők. A döntéstámogatási rendszerek legfontosabb művelete a lekérdezés, és az adatok elemzése. Azokat a rendszereket, amelyek célja nagymennyiségű adat feldolgozása, OLAP (On-Line Analitical Processing) on-line analitikus elemző rendszereknek nevezik. Ezekben a rendszerekben a legfontosabb az adatok hatékony, gyors visszakeresése és a különböző adatelemzési eljárások alkalmazása. 13
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
OLTP
OLAP
kisebb adatmennyiség
nagy adatmennyiség
karbantartás
lekérdezés
aktuális állapot
archívum
gyakori rövid ideig tartó tranzakció
kevesebb, hosszabb időt igénylő tranzakció
sok konkurens művelet
kevés konkurens művelet
homogén adatforrás
heterogén adatforrás
Az OLTP és az OLAP rendszerek összehasonlítása
Adattárházak (Data Warehouse) Az analitikus elemző rendszerek feladatuk miatt alapvetően más adatkezelő rendszert igényelnek, mint a tranzakció feldolgozó rendszerek. Erre a célra adattárházakat szoktak kialakítani. Az adattárház (data warehouse) egy témaorientált, integrált adatrendszer, amelynek legfőbb feladata az adatok lekérdezésének, elemzésének támogatása. Az adattárházban tárolt adatok mennyisége többnyire terabyte-okban mérhető. Az adattárházak általában műveleti adatbázisokon alapulnak, többnyire nem is egy homogén adatforrásból, hanem több, többféle felépítésű adatbázisból kapják adataikat. Az adatok betöltés, majd időszakos frissítések során kerülnek az adattárházba. Ahhoz, hogy a különböző adatmodellekből származó adatokat egyetlen rendszerbe lehessen integrálni, a betöltés és frissítés előtt az adatokat egységes formátumúvá kell alakítani, és ki kell szűrni a közöttük fennálló esetleges ellentmondásokat. Ezt az eljárást adattisztításnak nevezzük. Az adattárházakban gyakorlatilag nincs tranzakció kezelés, így szinkronizációs problémák sem fordulnak elő. Ezzel szemben számtalan, sokszor hosszú futási idejű lekérdezést hajtanak végre. A kliens oldalon a lekérdezések eredményét további elemzéseknek vetik alá, ezért az itt használatos eszközök többnyire táblázatkezelők, vagy statisztikai programcsomagok. A nagymennyiségű adat elemzésére adatbányászati (data mining) programokat használhatnak, melyek sokrétű adatelemzést, statisztikák készítését, az adatok közötti összefüggések feltárását teszik lehetővé. Az adattárház kezelő rendszerének fontos feladat, hogy biztosítsa az adatok bizonyos jellemzők szerinti összegzését felfelé (aggregálás, drill up), illetve az adatok bontását lefelé (lefúrás, drill down). Az összegzés során például a termelési értékeket megtekinthetjük, napi, havi, negyedéves, vagy akár éves bontásban is, a lefúrás pedig arra szolgál, hogy például, ha az elemzés kimutatja, hogy a cég eladásai csökkentek az előző évihez képest, részletesebb bontásban vizsgálható, hogy melyik termékkategória esetén, vagy konkrétan mely termékek esetén következett be ez a csökkenés. 14
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
Az adattárházak nem aktuális adatokkal dolgoznak, a döntéstámogatási rendszerek általában nem is igénylik a napra pontos adatokat, hiszen például a trendek vizsgálatához teljesen megfelelő, ha az adatok csak az előző hétig, vagy esetleg csak az előző hónapig állnak rendelkezésre. Mivel az adattárházak nagyon sok adatot integrálnak, a lekérdezések megkönnyítése érdekében célszerű lehet tematikus részekre bontani, ezek a részek a data mart-ok, vagy adatpiacok.
5. ábra: Egy adattárház helye az információs rendszerben Az adattárházak felépítéséhez már nem megfelelő a hagyományos relációs adatmodell, hiszen például nem tudja hatékonyan biztosítani az adatok több szempont szerinti csoportosítását. Ezért helyette a többdimenziós (multidimenzionális) adatmodellt alkalmazzák. Ebben a modellben az adatok tárolási egysége a kocka. A kocka élei a dimenziók, ezek egy-egy tulajdonságnak felelnek meg, a kocka tartalma pedig a tulajdonságok által meghatározott érték. Például az eladások nyilvántartására kialakíthatunk egy olyan háromdimenziós modellt, amelyben a dimenziók: a termék, az eladás dátuma és az értékesítési piacok, a cellák tartalma pedig egy adott termékből adott napon, adott üzletben eladott mennyiség.
15
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
Az értékesítési időszakok adatai
Az értékesített termékek mennyiség adatai
Az értékesített termékek fajtái
6. ábra: Többdimenziós adatmodell
Általában ilyen részletezettséggel nincs szükség az adatokra az elemzések során, ezért a dimenziók mentén az adatok összesíthetők, így például a dátum lehet hónap, vagy negyedév, a termék lehet termék-kategória, az üzlet pedig város, vagy régió szintű. A lekérdezések során fogalmazhatjuk meg, hogy az egyes dimenziók mentén milyen szintű összegzést kérünk. A kockát szeletelhetjük (slice) is valamely dimenzió mentén, ekkor az adott dimenzió értékét rögzítjük, így a dimenziók számát csökkentjük, mintegy a nagy kockának egy síkmetszetét vizsgáljuk. Fenti példánkban, ha egy adott termék eladási adataira vagyunk kíváncsiak az idő és a piac függvényében, ez már egy kétdimenziós táblázatban is ábrázolható. Egy másik szeletet választunk ki, ha az eladásokat egy adott időszakban vizsgáljuk, vagy az egy piacon történt eladásokat nézzük. Ha két, vagy több dimenzió értékét rögzítjük egy konkrét értéken, vagy értékhatárok között, akkor az eredeti kockából egy kisebb kockát választunk ki.
16
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
7. ábra: Szeletelés Természetesen nemcsak háromdimenziós adatmodell alakítható ki, hanem tetszőleges dimenziójú, ezeket azonban már nem lehet ilyen szemléletes módon megjeleníteni. A többdimenziós adatmodell tárolásához az adattárházak gyakran a csillag sémát használják. Ez a séma egy ténytáblából és dimenziótáblákból áll. A ténytáblában egy sor egy adatkocka leírása. Tartalmazza a kocka koordinátáit, és a kockában elhelyezett értéket, vagy értékeket. A koordinátákat úgy tárolják, hogy minden koordináta érték helyett egy mutató található, amelyik a megfelelő dimenziótábla azon sorára mutat, amely ennek a koordinátának a leírását tartalmazza. Például az eladott mennyiségnél a koordináták az idő, a termék és a hely, tehát három mutató szerepel egy sorban, valamint a mennyiség értéke. A dátum mutató a kockához tartozó dátum sorára mutat az idő dimenziótáblájában, a hely mutató az adott üzlet sorára, a termék mutatója pedig az eladott termék sorára a termék dimenziótáblájában.
17
Adatbázisok és adattárházak – az információs rendszerek adatkezelői
8. ábra: Csillag séma Árnyaltabb adatstruktúra a hópehely séma, ugyanis ebben a dimenziókon belüli hierarchiák is megjeleníthetők.
9. ábra: Hópehely séma
18