210 likes | 360 Views
Obje ktovo – Orientovan é Datab ázy (ODBMS). Martin Janušek MFF UK Praha 26.11.2003. Príčiny vzniku ODBMS. Databáza ako fundamentálna komponenta softvérových systémov Potreba komplexnejších aplikácíí
E N D
Objektovo – Orientované Databázy (ODBMS) Martin Janušek MFF UK Praha 26.11.2003
Príčiny vzniku ODBMS • Databáza ako fundamentálna komponenta softvérových systémov • Potreba komplexnejších aplikácíí • Tradičné databázy neumožňovali špecifikovať štruktúru komplexných objektov a operácie s nimi • Rozvoj objektovo orientovaných programovacích jazykov
História • Vznik prvých objektovo orientovaných databázových systémov (DBMS) • OPENOODB – Texas Instruments • ARDENT – Ardent Software • ODE – AT&T Bell Labs … • Vznik štandardu ODMG-93 konzorciom ODMG (Object Database Management Group)
ODMG-93 Objektový Model • Základné modelové primitivum – objekt • Kategorizácia objektov – typy • spoločné chovanie • spoločný rozsah stavov • Definícia chovania na objekte – operácie • Stav objektu – skupina vlastností • atribúty • vzťahy
ODMG-93 Objektový Model(2) • typ – jeden interface, viac implemntácií • interface • vlastnosti • operácie na danom type objektu • implementácie • dátové štruktúry • implementácia operácií
ODMG-93 Typy • Definuje stav a chovanie (charakteristiku) inštancie objektu • stav – množina vlastností • chovanie – množina operácií • Dedičnosť • abstraktné typy • strom dedičnosti – acyklický graf
ODMG-93 Objekty • koreňový typ - Denotable_Object • hierarchia • Object - nestály (mutable) • Atomic_Object - atomický (atomic) • Structured_Object - štruktúrovaný (structured) • Literal - stály (immutable) • Atomic_Literal - atomický (atomic) • Structured_Literal- štruktúrovaný (structured)
ODMG-93 Objekty (2) • Typ Object • identita (OID) • pomenovanie • popis • predikáty • vlastnosti • Has_name?:Boolean • name: Set<String> • type: Type
ODMG-93 Objekty (3) • operácie • delete() • same_as? (oid: Object_id) ->b:Boolean • životný cyklus • procedúra • proces • databáza • Typ Literal • atomické – integer, float, boolean, character • štruktúrované – bit_string, char_string, enumeration, date, time, dateTime, interval
ODMG-93 Vlastnosti • Atribúty • typ literal alebo množina literálov - bez OID • definované operácie – set_value, get_value • definujú abstraktný stav • Vzťahy • definované medzi nestálymi objektmi • pomenovaný každý smer vzťahu • 1:1, 1:N, M:N
ODMG-93 Operácie • definované na 1-objektových typoch • signatúra operácie • argumenty, typy, výnimky • preťažovanie operácií • koreňový typ Výnimka
ODMG-93 Štruktúrované objekty • Kolekcie (Collection) • abstraktné typy • typ Iterator T – Collection::create_iterator • nepomenované pozície • rovnaký typ • množina (set) – nezoradená, bez duplikátov • batoh (bag) – nezoradená, duplikáty • zoznam (list) – zoradená, duplikáty • pole (array) – 1 dimenzia, variabilná veľkosť
ODMG-93 Štruktúrované objekty (2) • Štruktúry • pevná dĺžka • pomenované pozície • dvojica (názov, hodnota) • pri kopírovaní sa vytvára „plytká“ kópia
ODMG-93 Štruktúrované literály • po vytvorení sa nedajú meniť • Kolekcie • neimplementujú operáciu remove() • String, Bit_String • Štruktúry • používajú sa ako návratové typy dotazov • Date, Time, DateTime
ODMG-93 Kompatibilita, tran- sakcie,typ Database • Kompatibilita • silne typová kontrola • nedefinované konverzie medzi literálmi • Transakcie • Typ Database • open() • close() • contains_object? (oid:Object) ->b: Boolean • lookup_object (oid:Object) ->b: Boolean
ODMG-93 Object Defintion Language (ODL) • ODL by mal podporovať všetky konštrukcie ODMG Objektového Modelu • ODL nie je programovací jazyk, ale špecifikácia jazyka pre signatúry interfacov • ODL je nezávislý na programovacom jazyku • ODL by mal byť kompatibilný s Interface Definition Language • ODL by mal byť rozšíriteľný
ODMG-93 Object Defintion Language (ODL) (2) • ODL je DDL pre objektové typy • schéma pre definíciu objektových typov v akomkoľvek OOPJ • pre aplikáciu zabezpečuje „izoláciu“ medzi programovacím jazykom a podkladovým ODBMS produktom
ODMG-93 Object Defintion Language (ODL) (3) • Špecifikácia typu <type definition> ::= Interface <type_name> [<supertype_list> ] { [<type_property_list>] [<property_list>] [<operation_list>] }; • Špecifikácie charakteristík, atribútov, vzťahov, operácií ...
ODMG-93 Object Query Language (OQL) Založený na nasledujúcich princípoch a predpokladoch: • OQL je dotazovací jazyk, ktorý sprostredkúva jednoduchý prístup k objektovej databázi • OQL nie je výpočtovo kompletný • OQL umožňuje deklaratívny prístup k objektom
ODMG-93 Object Query Language (OQL) (2) • OQL závisí na ODMG Objektovom Modele • OQL má abstraktnú syntax • OQL má konkrétne syntaxe definované na prepojenie s programovacími jazykmi • OQL nezabezpečuje explicitné update operátory, ale spolieha sa na definované operácie na objektoch
ODMG-93 Object Query Language (OQL) (3) • Formálna sémantika OQL je ľahko definovateľná • OQL je ľahko optimalizovateľný • OQL ako samostatný jazyk používa konkrétnu syntax podobnú SQL