2.2. A háromséma architektúra és az adatfüggetlenség

Az adatbázisszemléletnek a 1.3. alfejezetben felsorolt négy fontos jellegzetessége közül három: (1) a programok és adatok szétválasztása (program-adat és program-művelet függetlenség), (2) több felhasználói nézet támogatása, és (3) egy katalógus használata az adatbázis leírásának (a sémának) a tárolására. Ebben az alfejezetben közelebbről megadjuk az adatbázisrendszerek egy architektúráját, az ún. háromséma architektúrát , amelyenek a célja, hogy segítsen megérteni és megjeleníteni ezeket a jellegzetességeket. Ezután a továbbiakban az adatfüggetlenség fogalmát tárgyaljuk.

2.2.1. A háromséma architektúra

2.1. ábra - A háromséma architektúra

A háromséma architektúra

A 2.1. ábrán látható háromséma architektúra célja, hogy elkülönítse a felhasználói alkalmazásokat és a fizikai adatbázist. Ebben az architektúrában a következő három szinten definiálhatunk sémákat:

  1. A belső szintnek van egy belső sémája , amely az adatbázis fizikai tárolási szerkezetét írja le. A belső séma egy fizikai adatmodellt használ, és leírja az adattárolás összes részletét, valamint a hozzáférési utakat az adatbázishoz.

  2. A koncepcionális szintnek van egy koncepcionális sémája , amely a teljes adatbázis szerkezetét írja le a felhasználók összességének. A koncepcionális séma elrejti a fizikai tárolási szerkezetek részleteit, csak az egyedek, adattípusok, kapcsolatok, felhasználói műveletek és megszorítások leírására korlátozódik. Általában egy reprezentációs adatmodellt szoktunk használni a koncepcionális séma leírására, amikor megvalósítunk egy adatbázist. Ez az implementációs koncepcionális séma gyakran egy koncepcionális sématerven alapul egy magas szintű adatmodellben.

  3. A külső (nézet) szint számos külső sémát (felhasználói nézetet) foglal magában. Mindegyik külső séma az adatbázisnak egy olyan részét írja le, amely iránt egy bizonyos felhasználói csoport érdeklődik, és elrejti ez elől a felhasználói csoport elől az adatbázis többi részét. Az előző esethez hasonlóan mindegyik külső sémát jellemzően egy reprezentációs adatmodell felhasználásával implementáljuk, esetleg egy magas szintű adatmodellbeli külső sémára alapozva.

A háromséma architektúra egy kényelmes eszköz, amellyel a felhasználó maga elé képzelheti a sémaszinteket egy adatbázisrendszerben. A legtöbb adatbázis-kezelő rendszer nem választja szét teljesen és határozottan a három szintet, de bizonyos mértékben támogatja a háromséma architektúrát. Vannak adatbázis-kezelő rendszerek, amelyek a fizikai szintű részleteket beleértik a koncepcionális sémába. A háromszintű ANSI architektúrának fontos szerepe van az adatbázis technológia fejlesztésében, mert világosan szétválasztja a felhasználó külső szintjét, a rendszer koncepcionális szintjét és a belső tárolási szintet egy adatbázis tervezésekor. Manapság is jól alkalmazható adatbázis-kezelő rendszerek tervezésében. A legtöbb adatbázis-kezelő rendszer, amely támogatja a felhasználói nézeteket, a külső sémákat ugyanabban az adatmodellben adja meg, amely leírja a koncepcionális szintű információkat (például egy olyan relációs adatbázis-kezelő rendszer, mint az Oracle, az SQL-t használja erre). Néhány adatbázis-kezelő rendszer megengedi különböző adatmodellek használatát a koncepcionális és a külső szinteken. Példa erre az Universal Data Base (UDB), az IBM adatbázis-kezelő rendszere, amely relációs adatmodellt használ a koncepcionális séma leírására, egy külső séma leírásához viszont objektumorientált modellt is lehet használni benne.

Vegyük észre, hogy a három séma csak a leírása az adatoknak; a tárolt adatok, amelyek valójában léteznek, a fizikai szinten találhatók. Egy háromséma architektúrára alapozott adatbázis-kezelő rendszerben minden felhasználói csoport csak a saját külső sémájára tud hivatkozni. Ezért az adatbázis-kezelő rendszernek egy külső sémára vonatkozó kérést át kell alakítania egy olyan kéréssé, amely a koncepcionális sémán értelmezhető, majd aztán egy belső sémára vonatkozó kéréssé a fizikai adatbázis feldolgozásához. Ha egy kérés egy adatbázis-lekérdezés, a fizikai adatbázisból kinyert adatokat vissza kell alakítani úgy, hogy az illeszkedjen a felhasználó külső nézetéhez. A kérések és eredmények egyes szintek közötti átalakításának a folyamatát leképezéseknek hívjuk. Ezek a leképezések időigényesek lehetnek, ezért néhány adatbázis-kezelő rendszer — különösen azok, amelyeket kis adatbázisok támogatására terveztek — nem támogatja a külső nézeteket. Mindazonáltal még az ilyen rendszerekben is szükség van bizonyos mennyiségű leképezésre a kérések átalakításához a koncepcionális és a belső szintek között.

2.2.2. Az adatfüggetlenség

A háromséma architektúra az adatfüggetlenség fogalmának további kifejtésére is felhasználható, amely definiálható úgy is, mint a séma megváltoztatásának a képessége egy adatbázisrendszer valamely szintjén anélkül, hogy meg kellene változtatni a sémát a következő magasabb szinten. Az adatfüggetlenségnek két típusát definiálhatjuk:

  1. A logikai adatfüggetlenség a koncepcionális séma megváltoztatásának a képessége anélkül, hogy meg kellene változtatni a külső sémákat vagy az alkalmazói programokat. Megváltoztathatjuk a koncepcionális sémát az adatbázis kiterjesztésével (egy rekordtípus vagy egy sémaelem hozzáadásával), a megszorítások módosításával, vagy az adatbázis csökkentésével (egy rekordtípus vagy egy sémaelem eltávolításával). Az utóbbi eset azokra a külső sémákra, amelyek csak a megmaradó adatokra hivatkoznak, nem lehet hatással. Az 1.3. (a) ábrán látható külső séma például nem változhat meg, ha a 1.2. ábrán látható INDEXSOR állomány (vagy rekordtípus) az 1.4. ábrán láthatóra módosul. Egy adatbázis-kezelő rendszerben, amely támogatja a logikai adatfüggetlenséget, csak a nézetdefiníciókat és a leképezéseket kell megváltoztatni. Miután a koncepcionális séma keresztülment a logikai újraszervezésen, az alkalmazói programoknak, amelyek a külső sémaelemekre hivatkoztak, ugyanúgy kell működniük, mint azelőtt. A megszorítások módosításai anélkül alkalmazhatók a koncepcionális sémára, hogy hatással lennének a külső sémákra vagy az alkalmazói programokra.

  2. A fizikai adatfüggetlenség a belső séma megváltoztatásának a képessége anélkül, hogy meg kellene változtatni a koncepcionális sémát. Ennélfogva a külső sémákat sincs szükség megváltoztatni. A belső sémát érintő változások azért válhatnak szükségessé, mert néhány fizikai állományt újraszervezünk — például további hozzáférési szerkezetek létrehozásával — a lekérdezések vagy a módosítási műveletek hatékonyságának növelése érdekében. Ha ezek után ugyanazok az adatok maradnak az adatbázisban, akkor elvileg nem kell megváltoztatnunk a koncepcionális sémát. Ha például a sebesség növelése érdekében biztosítunk egy elérési utat a kurzus rekordok (1.2. ábra) tanév és félév szerinti lekérdezéséhez, elvileg nem kell megváltoztatnunk egy olyan lekérdezést, mint például hogy listázzuk ki a 2009/10-es tanév őszi félévében meghirdetett kurzusokat, bár a lekérdezést a DBMS hatékonyabban fogja végrehajtani az új elérési út használatával.

A fizikai adatfüggetlenség a legtöbb adatbázisban és állománykörnyezetben jelen van; ekkor az adatok pontos elhelyezkedése a lemezen, a háttértáron való tárolás mikéntje, a rekordok elhelyezése, tömörítése, szétdarabolása és összeillesztése stb. rejtve vannak a felhasználók elől. Az alkalmazásoknak nem szükséges tudniuk ezekről a részletekről. Másrészről a logikai adatfüggetlenséget nagyon nehéz elérni, mivel az szerkezeti és megszorításbeli változásokat is megenged anélkül, hogy azok az alkalmazói programokra hatással lennének, és ez sokkal szigorúbb követelmény.

Ha többszintű DBMS-sel rendelkezünk, a katalógusát ki kell egészíteni olyan információkkal, amelyek azt mondják meg, hogy hogyan kell leképezni a kéréseket és az adatokat a különböző szintek között. A DBMS további szoftvereket használ ezeknek a leképezéseknek a megvalósítására, amelyek a katalógusban szereplő leképezési információkat veszik alapul. Az adatfüggetlenség ott jelenik meg, hogy amikor a séma egy adott szinten módosul, akkor a következő, magasabb szinten lévő séma változatlan marad; csak a két szint közötti leképezés változik. Így az alkalmazói programokat, amelyek a magasabb szintű sémára hivatkoznak, nem kell módosítani.

A háromséma architektúra megkönnyíti az igazi adatfüggetlenség elérését mind fizikai, mind logikai szinten. A leképezések két szintje azonban plusz munkát követel meg egy lekérdezés vagy program lefordítása vagy végrehajtása közben, és ez csökkenti a DBMS hatékonyságát. Emiatt csak kevés DBMS implementálja a teljes háromséma architektúrát.