Obje ktovo – Orientovan é Datab ázy (ODBMS)
description
Transcript of Obje ktovo – Orientovan é Datab ázy (ODBMS)
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émovPotreba komplexnejších aplikácííTradičné databázy neumožňovali špecifikovať štruktúru komplexných objektov a operácie s nimiRozvoj 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 – objektKategorizácia objektov – typy spoločné chovanie spoločný rozsah stavov
Definícia chovania na objekte – operácieStav 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
TransakcieTyp 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 ModeluODL nie je programovací jazyk, ale špecifikácia jazyka pre signatúry interfacovODL je nezávislý na programovacom jazykuODL by mal byť kompatibilný s Interface Definition LanguageODL 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áziOQL 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 ModeleOQL má abstraktnú syntaxOQL má konkrétne syntaxe definované na prepojenie s programovacími jazykmiOQL 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