ODMG Irodalom Cattel Barry The Object Data Standard
ODMG Irodalom: Cattel, Barry: The Object Data Standard: ODMG 3. 0, Academic press
ODMG n n n n ODMG szabvány Az objectum adatbázis-kezelő rendszerek és az objektum relációs rendszerek implementálják. ODMG – Object Data Managemet Group Az objektum adatbázis-kezelő rendszerek (Object database management systems - ODBMS) közvetlenül az objektumokat tárolják Object-to Database Mappings (ODM) az objektumokat átkonvertálják és tárolják egy relációs vagy más adatbázisrendszerre. Az ODBMS-t és az ODM-t együtt objektum adatkezelő rendszereknek (Object data management systems - ODMS) hívjuk. ODMG teszi lehetővé, hogy a különböző szállítók közös objektum interfészt használjanak, támogassanak, melynek a segítségével adatbázis alkalmazásokat lehet készíteni. A szabvány specifikációhalmaza lehetővé teszi, hogy a fejlesztők hordozható alkalmazásokat írjanak (adat séma, programozási nyelvi kötés, adat módosítás és lekérdező nyelv)
ODMG 3. 0 n n n A szabvány érett (mature) és stabil 2001 -ben adták ki Az ODMG azóta feloszlott.
ODMG n n ODBMS egy olyan DBMS, amely egyesíti az adatbázis képességeit az objektum-orientált programozási nyelvi képességekkel. ODM egy olyan rendszer, amely egyesíti a relációs vagy más nem objektum DBMS-eket az objektum orientált programozási nyelvi képességekkel. ODM-ek objektum-relációs leképező (mapping) termékeket és objektum alkalmazás szervert tartalmaznak. Az ODMS mindkét típusa az adatbázis-objektumokat mint programozási nyelvbeli objektumokat jeleníti meg egy vagy több létező programozási nyelvben.
ODMG 3. 0 n A fő részei n n Object Model Object Specification Language n n Object Definition Language (ODL) Object Interchange Format (OIF) Object Query Language (OQL) Language Bindings (C++, Smalltalk, Java)
Object Model n n Az objektum modell az ODMS-ben explicit meghatározható szemantikák fajtáit határozza meg. Az Objektum modell szemantikája meghatározza az objektum jellemzőit, azt, hogy azt objektumok hogyan viszonyulnak egymáshoz, és azt, hogy az objektumokat hogyan lehet elnevezni és azonosítani.
Object Model n Az objektum modell a következő, az ODMS által támogatott elemeket definiálja: n n Az alap modellező primitív az objektum és a literal. Minden objektumnak van egyedi azonosítója. A literálnak nincs azonosítója. Az objektumok és a literálok csoportosíthatóak a típusaik alapján. Ugyanolyan típusú elemeknek ugyanaz az állapotaiknak a tartománya (ugyanolyan attribútumaik vannak) és ugyanaz a viselkedésük (ugyanolyan műveleteik vannak). Egy objektumra gyakran a típus példányaként hivatkozunk.
Object Model n Az objektum modell a következő, az ODMS által támogatott elemeket definiálja: n Egy objektum állapotát a tulajdonságaikban (property) hordozott értékekkel definiáljuk. A tulajdonságok lehetnek az objektumok attribútumai vagy kapcsolatok az objektum és egy vagy több más objektum között. Általában az objektumok tulajdonságainak értékei idővel változnak.
Object Model n Az objektum modell a következő, az ODMS által támogatott elemeket definiálja: n n Egy objektum viselkedését az objektumon végrehajtható műveletek halmazával definiálhatjuk. A műveleteknek lehetnek input és output paraméterei (meghatározott típussal). Az egyes műveletek egy típussal rendelkező eredménnyel térhetnek vissza. Az ODMS objektumokat tárol, lehetővé téve megosztásukat több alkalmazás és felhasználó között. Az ODMS egy sémán alapszik, amelyet ODL-ben definiálhatunk és a sémában definiált típusok példányait tartalmazzák.
Object Model n Az objektum modell lényegesebben gazdagabb szemantikát tartalmaz, mint a relációs modell, mivel itt explicit adhatunk meg kapcsolatokat és műveleteket.
Objektum Modell – Specifikáció és Implementáció n n n Egy típus definíciójának két nézőpontja van. Egy típusnak van egy külső specifikációja És egy vagy több implementációja. A specifikáció a típus külső jellemzőit határozza meg. Ezeket a jellemzőket láthatják a felhasználók: a műveleteket, amelyeket a példányaira meg lehet hívni, a tulajdonságaikat, vagy azon változók állapotait, amelyeket el lehet érni, és a kivételeket, amelyeket a műveletek kiválthatnak. Egy típus implementációja meghatározza a típus objektumainak a belső jellegét: a típus műveleteinek az implementációját és más belső részleteket. Egy típus implementációját a nyelvi kötés (a language binding) határozza meg.
Objektum Modell – Specifikáció és Implementáció n külső specifikáció n n n Egy interfész definíció egy objektum típusnak csak az absztrakt viselkedését határozza meg. Egy osztály definíció egy objektum típus absztrakt viselkedését és absztrakt állapotát határozza meg. Egy osztály egy kiterjesztett interfész, amely az ODMS séma definíciójának információjával rendelkezik. Egy literál definició a literál típusnak csak az absztrakt állapotát definiálja.
Objektum Modell – Specifikáció és Implementáció n Egy objektum típus implementációja a következőket tartalmazza: n n A reprezentáció egy adatstruktúra, amelyet a nyelvi kötés a típus absztrakt állapotából származtat: n n egy reprezentációt és metódusok halmazát. Az absztrakt állapot minden tulajdonságához létezik egy megfelelő típusú példányváltozó. A metódusok eljárástörzsek, amelyeket a nyelvi kötés a típus absztrakt viselkedéséből származtat: n n n A típus absztrakt viselkedésében definiált minden művelethez egy metódus van definiálva. Ez a metódus implementálja egy objektum típus külső látható viselkedését. Egy metódus olvashat vagy módosíthat egy objektum állapotának reprezentációján vagy más objektumon definiált műveleteket hívhat meg. Az implementációban lehetnek olyan metódusok, amelyeknek nincs közvetlen másolatuk a típus specifikáció műveleteihez. Az implementáció tartalma nem látható az objektum felhasználója számára.
Objektum Modell – Specifikáció és Implementáció n n A nyelvi kötések definiálnak a literál típusok leképezéséhez egy implementációt. Egy típusnak lehet egynél több implementációja, bár általában minden program egy implementációt használ.
Objekum Modell – Altípusok és viselkedésöröklődés n Az objektum modell öröklődés alapú típus-altípus kapcsolatot tartalmaz. n n n Szupertípus <-> altípus, (is-a kapcsolat, ISA kapcsolat, generalization-specialization kapcsolat) A szupertípus általánosabb típus, az altípus részletesebb. interface Employee {. . . }; interface Professor : Employee {. . . }; interface Associate_Professor : Professor {. . . };
Objekum Modell – Altípusok és viselkedésöröklődés n n Egy objektum legrészletesebb típusa (most specific type) az a típus, amely a példány minden viselkedését és tulajdonságát leírja. Associate_Professor objektum legrészletesebb típusa az Associate_Professor interfész, amely magában hordozza a Professor és az Employee interfészek információit.
Objekum Modell – Altípusok és viselkedésöröklődés n n Egy altípus interfész a szupertípusa kiegészítéseként jellemzőket adhat meg. Ezek a új kiegészítők csak az altípus példányaira (illetve annak altípusaiban) alkalmazhatóak. Egy altípus interfész úgy pontosítható, hogy állapotot és viselkedést határoz meg. Az Employee típusnak lehet egy calculate_ paycheck nevű művelete. A Salaried_Employee és Hourly_Employee osztály megvalósítások finomíthatják a viselkedést, hogy az visszatükrözze az ő saját szükségleteiket. Az objektum programozás polimorfikus természete lehetővé teszi a megfelelő viselkedés futási időben történő meghívását a példány aktuális típusától függően.
Objekum Modell – Altípusok és viselkedésöröklődés n n n Az ODMG Object Model támogatja az objektum viselkedés többszörös öröklődését. Lehetséges, hogy egy típus olyan műveletekből származik, amelyeknek ugyanaz a nevük, de más a paraméterük és két különböző interfészből származnak. A model kizárja ezt a lehetőséget azzal, hogy az öröklődés során nem engedélyezi a nevek túlterhelését.
Objekum Modell – Altípusok és viselkedésöröklődés n n ODL osztályokat a nyelvi kötések a programozási nyelv közvetlenül példányosítható osztályaira képzik le. Az interfészek olyan típusok, amelyek közvetlenül nem példányosíthatóak. Az altípusok csak viselkedésöröklést tesznek lehetővé, az interfészek öröklődhetnek más interfészekből, az osztályok interfészekből öröklődhetnek. Az interfészek nem öröklődhetnek osztályokból és az osztályok sem öröklődhetnek más osztályokból.
Objekum Modell – Állapot öröklés n n Az Objektum Modell definiál egy EXTENDS kapcsolatot az állapot és a viselkedés öröklődésre. Az EXTENDS kapcsolat csak objektum típuson alkalmazható, ezért csak osztályok (és literálok nem) örökölhetnek állapotot. Az EXTENDS kapcsolat egyszerű öröklés kapcsolat két osztály között, ahol az alárendelt osztály örökli az általa kibővített osztály minden tulajdonságát és viselkedését. Az EXTENDS kapcsolat tranzitív.
Objektum Modell – Terjedelem (Extent) n n Egy típus terjedeleme (extent) egy adott ODMS-en belül a típus összes példányának a halmaza. Ha egy objektum egy A típus példánya, akkor szükségszerűen az A terjedelmének egy eleme. Ha A típus altípusa B típusnak, akkor A terjedelme B terjedelmének részhalmaza. A terjedelem karbantartása magában foglalja az újonnan létrehozott példány beszúrását a halmazba és a törölni kívánt példány eltávolítását a halmazból.
Objektum Modell– Kulcsok n n n Egy típus egyedi példányait egyértelműen lehet azonosítani olyan értékekkel, amelyeket valamilyen tulajdonság vagy tulajdonsághalmaz hordoz. Ezeket az azonosító tulajdonságokat kulcsoknak hívják. A relációs modell kulcsjelöljeinek felel meg. Az egyszerű kulcs egyszerű tulajdonságból áll. Az összetett kulcs tulajdonságok egy halmazából áll. Az egyediség határköre a típus terjedelme; így egy típusnak kell lennie terjedelmének, hogy legyen kulcsa.
Objektum Modell– Objektumok n Az objektumhoz kapcsolódó szempontok: n n n Létrehozás, amely arra a módra utal, ahogy a programozó az objektumot létrehozza. Azonosító, amelyet az ODMS használ, hogy egy objektumot megkülönböztessen egy másiktól, és hogy megtaláljon egy objektumot. Név, amelyet a programozó vagy a végfelhasználó adott, hogy kényelmesen hivatkozhasson egy objektumra. Élettartam, amely meghatározza, hogy az objektum számára lefoglalt memóriát és tárat hogyan kezeli a rendszer. Struktúra, amely lehet atomi vagy több más objektum összetétele.
Objektum Modell– Objektumok n Létrehozás n Az objektumok úgy jönnek létre, hogy a nyelvi kötési implementációja meghívja a létrehozó műveletet egy factory interfészen, amely egy factory objektummal látja el a programozót. interface Object. Factory { Object new(); }; n Egy perzisztens objektum minden elérés, létrehozás, módosítás és törlés műveletét egy tranzakció hatáskörében kell létrehozni.
Objektum Modell– Objektumok n Létrehozás n Minden objektum rendelkezik a következő ODL interfésszel, amelyet minden felhasználó által definiált objektum definíciója implicit módon örököl. interface Object { enum Lock_Type{read, write, upgrade}; void lock(in Lock_Type mode) raises(Lock. Not. Granted); boolean try_lock(in Lock_Type mode); boolean same_as(in Object an. Object); Object copy(); void delete(); };
Objektum Modell– Objektumok n Létrehozás n n Az objektum azonosságának az összehasonlítása a same_as művelettel történik. A copy művelet a kapott objektummal megegyező objektumot hoz létre. Az új objektum nem ugyanaz (“same as”), mint az eredeti objektum. A létrehozott objektumokat a delete művelettel lehet az ODMS-ből törölni. A művelet eltávolítja az objektumot a memóriából is. A Lock_Type, lock, try_lock a zárolási stratégiához tartozik.
Objektum Modell– Objektumok n Objektum azonosítók n Az objektumot a storage domain-jén belül mindig meg lehet különböztetni más objektumoktól. n Az ODMG Object Model-jében a storage domain az ODMS. n Egy ODMS-en belül az objektum minden azonosítója egyedi. Egy objektum azonosítójának a reprezentációjára az objektum azonosítójaként hivatkozhatunk. n Egy objektum megtartja az objektum azonosítóját a teljes élettartamára. n Egy objektum azonosítója soha nem változik. Az objektum ugyanaz marad akkor is, ha az attribútumai vagy a kapcsolatai változnak. Egy objektum azonosítóját általában úgy használják, hogy az egyik objektum hivatkozik egy másikra.
Objektum Modell– Objektumok n Objektum azonosítók n Az objektum azonosítója nem felel meg a relációs modell elsődleges kulcsának. n A literáloknak nincs saját azonosítójuk és nem szerepelhetnek objektumként. n Az objektum azonosítóját az ODMS generálja és nem az alkalmazások.
Objektum Modell– Objektumok n Objektum nevek n Egy objektumnak lehet egy vagy több neve. A neveknek a programozó vagy a felhasználó számára van jelentésük. n Az ODMS biztosít egy olyan függvényt, amely az objektum nevét leképezi egy objektumra. n Az objektumnevek olyanok, mint a globális változók a programozási nyelvekben. n A kulccsal nem egyeznek meg. n A név egyediségének a hatásköre egy ODMS.
Objektum Modell– Objektumok n Objektumok élettartama n n Egy objektum élettartama meghatározza, hogy az objektumhoz lefoglalt memóriát és tárat hogyan kezeli a rendszer. Egy objektum élettartama akkor határozódik meg, amikor az objektum létrejön. Az objektum modell kétféle élettartamot támogat: : n n tranziens perzisztens
Objektum Modell– Objektumok n Objektumok élettartama n Tranziens n n n Az objektum a programozási nyelv futtató környezete által kezelt lefoglalt memória. Néhány tranziens objektumot egy eljárás fejében deklaráltak és a programozási nyelv futtató környezete által az eljárás meghívásakor létrehozott lefoglalt memóriát képviseli. Amikor az eljárás befejezi működését, a memória felszabadul. Más tranziens objektumok egy folyamathoz tartoznak, és a programozási nyelvi rendszer foglal le helyet számukra a memóriában. Amikor a folyamat befejezi működését, a memória felszabadul.
Objektum Modell– Objektumok n Objektumok élettartama n Perzisztens n n Egy objektum az ODMS futtató rendszere által kezelt lefoglalt memória és tár. Ezek az objektumok azután is léteznek, hogy az őket létrehozó folyamat vagy eljárás befejezte működését.
Objektum Modell– Objektumok n Objektum struktúra n Atomi n n Kollekció objektumok A kollekció objektumok példányai különböző elemekből vannak összeállítva, ahol az elemek egy atomi típus, egy másik kollekciótípus vagy egy literál típus példányai lehetnek. n A kollekció minden elemének ugyanolyan típusúnak kell lennie Strukturált Objektumok n Minden strukturált objektum támogatja az Object ODL interfészt. n n Az atomi objektumtípus a felhasználó által van definiálva. Nincs beépített atomi objektum az ODMG Objektum Modelljében.
Objektum Modell– Objektumok n Objektum struktúra n Kollekció objektumok n Az ODMS objektum modellje a következő kollekciókat támogatja: n • Set<t> n • Bag<t> n • List<t> n • Array<t> n • Dictionary<t, v>
Objektum Modell– Objektumok n Objektum struktúra n Strukturált Objektumok n Az ODMG Objektum modellje a következő strukturákat definiálja: n n Date Interval Timestamp
Objektum Modell– Literálok n Literálokhoz kapcsolódó szempontok: n n típusok másolás összehasonlítás ekvivalencia
Objektum Modell– Literálok n Típusok n atomi literal long, short, unsigned long, unsigned short, float, double, boolean, octet, char (character), string, enum n Enum típusgenerátor. attribute enum gender {male, female}; n n n Kollekció literál minden kollekciótípushoz Strukturált literál Minden beépített struktúratípushoz létezik n És létezik felhasználó által definiált struktúra struct Address { string dorm_name; string room_no; }; attribute Address dorm_address; n
Objektum Modell– Literálok n Másolás n n A literáloknak nincs azonosítójuk, ezért nem lehet megosztani őket. A literáloknak van másolási szemantikájuk. Például, ha egy literál kollekción iterálunk végig, az elemek másolatát kapjuk vissza. Ha egy objektum literál értékű attribútumát adjuk vissza, akkor a literál értékének másolata kerül vissza.
Objektum Modell– Literálok n Összehasonlítás n Mivel a literáloknak nincs objektum azonosítójuk, nem lehet őket összehasonlítani az azonosítójukkal (azaz a same_as művelettel). Ezért az egyenlőség ekvivalencia művelettel lesznek összehasonlítva.
Objektum Modell– Literálok n Ekvivalencia n …
Objektum Modell n n Az ODMG Object Model erősen típusos. Minden objektumnak és literálnak van típusa és minden operátor típusos operandusokat vár. Két objektumnak vagy literálnak akkor és csakis akkor ugyanaz a típusa, ha ugyanolyan nevű típus példányaiként vannak deklarálva. A típusok között az objektum modell nem biztosít implicit konverziót. Két atomi literálnak ugyanaz a típusa, ha ugyanahhoz a literálhalmazhoz tartoznak.
Objektum Modell - Tulajdonságok n n Az osztály tulajdonságok halmazát definiálja, megadva, hogy mely felhasználók érhetik el és bizonyos esetekben mely felhasználók módosíthatják közvetlenül az osztály példányának az állapotát. A tulajdonságokból két fajtát definiál az Object Model, az attribútumot és a kapcsolatot. Egy attribútumnak egy típusa van. A kapcsolatot két típus között definiáljuk, mindkettőnek rendelkeznie kell az objektum azonosítójával hivatkozható példányokkal. (A literál típusok nem vehetnek részt a kapcsolatban, mert nincs azonosítójuk. )
Objektum Modell - Tulajdonságok n Attribútum n Egy osztály attribútumdeklarációi definiálják egy példány absztrakt állapotát. class Person { attribute short age; attribute string name; attribute enum gender {male, female}; attribute Address home_address; attribute set<Phone_no> phones; attribute Department dept; };
Objektum Modell - Tulajdonságok n Kapcsolat n n n A kapcsolatot típusok között határozzuk meg. Az Object Model csak a bináris kapcsolatokat támogatja. Egy bináris kapcsolat lehet 1: 1, 1: n, n: m.
Objektum Modell - Tulajdonságok n Kapcsolat A relációkat a traversal path-ok deklarációjával explicit definiálhatjuk. Ez lehetővé teszi, hogy az alkalmazások a kapcsolatban résztvevő objektumok közötti logikai összeköttetést használják. n A traversal path-okat párokban deklarálják, azaz a kapcsolat mindkét irányához megadják. Egy reláció mindkét traversal pathához meg kell adni az ellentétes irányt is az inverse kulcsszóval. class Professor { A teaches-ben definiált relationship set<Course> teaches kapcsolat és az inverse Course: : is_taught_by; is_taught_by (traversal } path) kapcsolat egy 1: n class Course { típusú kapcsolatot valósít meg a Professor és a relationship Professor is_taught_by Course között. inverse Professor: : teaches; } n
Objektum Modell - Tulajdonságok n Kapcsolat n Az ODMS felelős a kapcsolatok hivatkozási integritásának a kezeléséért. Ez azt jelenti, hogy ha egy objektum részt vesz egy kapcsolatban, és töröljük, akkor minden, az objektumhoz vezető utat törölni kell.
Objektum Modell - Műveletek n n n Az attribútumok és a kapcsolatok mellett a típus másik jellemzője a viselkedés, amelyet műveleti szignatúrákkal adhatunk meg. A szignatúra definiálja a művelet nevét, az argumentumok típusát és nevét, a visszatérési értékük típusát, és azoknak a kivételeknek a nevét, amelyeket a művelet kiválthat. Az Object Model műveletekre vonatkozó specifikációja megegyezik a OMG CORBA műveletekre vonatkozó specifikációjával.
Object Model - Műveletek n n n Egy műveletet egy típuson lehet definiálni (egy osztályban vagy interfészben). A művelet nevének egyedinek kell lennie egy típuson belül. Különböző típusoknak lehet ugyanolyan nevű művelete. Ezeket a műveleteket túlterheltnek nevezzük. A műveletnek lehetnek mellékhatásai. Néhány művelet nem ad vissza értéket. . Az Object Model a műveletek szekvenciális végrehajtását feltételezi. Nem szükséges a konkurens és a párhuzamos műveleteket támogatni, de nem zárja ki azt, hogy az ODMS kihasználja a többprocesszoros feldolgozást. Az ODMG Object Model dinamikusan kezeli a beágyazott kivételkezelést a befejeződési modell használatával. A műveletek válthatnak ki kivételt és a kivételek kommunikálhatnak kivétel eredményeket.
Object Specification Language n n A specifikációs nyelveket az ODMG-nek megfelelő object data management systems (ODMS) képviseletére használják. Ezeket a programozási nyelv független specifikációs nyelveket egy ODMS sémájának, műveletének és állapotának a definiálására használják. Ezeknek a nyelveknek az elsődleges céljai, hogy megkönnyítsék az ODMG-nek megfelelő ODMS-ek közötti adatmigrációt. Ezek a nyelvek támogatják a különböző szállítók ODMS-ei közötti együttműködést is. Két specifikációs nyelvet említünk: n n Object Definition Language (ODL) Object Interchange Format (OIF).
Object Specification Language - ODL n Object Definition Language (ODL) n n n Az adatbázis-kezelő rendszerek (DBMS) van adatdefiníciós (using a Data Definition Language or DDL) és adatmanipulációs (using a Data Manipulation Language or DML) nyelve. A DDL-lel hozhatunk létre adattípusokat és interfészeket. DML teszi lehetővé, hogy a program létrehozzon, töröljön, cseréljen, stb. adattípusok példányait. Az ODL csak a műveletek szignatúráit definiálja, és nem célozza azon metódusdefiníciókat, amelyek ezeket a műveleteket megvalósítják. Az ODMG szabvány nem biztosít OML specifikációt.
Object Specification Language - OIF n Object Interchange Format – OIF n n Az Object Interchange Format (OIF) egy specifikációs nyelv, amelyet egy ODMS jelenlegi állapotának állományba vagy állományokba való betöltésére vagy kimentésére használnak. OIF a perzisztens objektumok ODMS-ek közti cseréjére, dokumentálásra, tesztágyak kezelésére használható.
Object Query Language - OQL n Lekérdezés inputja és az eredmény n n Független nyelvként az OQL lehetővé teszi az objektumok lekérdezését a nevükkel, mint az adatbázisba való belépési ponttal kezdve. Egy név bármilyen fajtájú objektumot jelölhet: atomi, struktúra, kollekció, vagy literál. Beágyazott nyelvként az OQL lehetővé teszi a natív nyelv által támogatott objektumok lekérdezését kifejezéseken keresztül, melynek eredménye lehet atomi, struktúra, kollekció vagy literál. Az OQL lekérdezés egy függvény, amely egy olyan objektumot eredményez, amelynek a típusa következhet a lekérdező kifejezésnek adott operátorból.
- Slides: 52