1 Le Modèle Objet de l ’ODMG Object Database Management Group Didier DONSEZ Uni
1 Le Modèle Objet de l ’ODMG Object Database Management Group Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.fr Didier Donsez, 1995-99 ODMG/ODL/OQL, 2 Sommaire I L’ODMG I Les standards ODMG I L ’architecture I ODL, OQL, OML C++, Smaltalk et Java I Relation avec CORBA I Conclusion & Bibliographie Didier Donsez, 1995-99 ODMG/ODL/OQL, 3 ODMG Object Database Management Group http://www.odmg.org I Composition • Président • Rick Cattell, SUN • Membres • GemStone Systems, IBEX Computing SA, Object Design, Objectivity, O2 Technology, POET Software, UniSQL, Versant Object Technology I But • Définir un standard permettant la portabilité des schémas de base et des programmes développés sur des SGBDs-OO différents • un standard ODMG-93 (94) • et son evolution ODMG-II (Mars 1997) Didier Donsez, 1995-99 ODMG/ODL/OQL, 4 Concepts du modèle objet de l ’ODMG • Objet, attribut, association • opérations (méthodes), exceptions • Héritage Multiple • Extent et Clé • Identité, nommage et durée de vie des objets • Valeurs (litéraux) atomiques, structurées, collection • Collections list, set, bag, array • Transactions, Contrôle de Concurrence, Verrouillage Didier Donsez, 1995-99 ODMG/ODL/OQL, 5 Les standards ODMG-93 et ODMG-II I Définition • Spécification • ODL - Object Definition Language • OIF - Object Interchange Format • Manipulation • Non-Procédural OQL - Object Query Language • Procédural OML - Object Manipulation Language » extensions (binding) Persistance et Transaction » langages généraux : C++, Smalltalk puis Java (06/97) • Imbrication des langages Didier Donsez, 1995-99 ODMG/ODL/OQL, 6 L ’Architecture Déclarations (ODL ou PL-ODL) Sources de l ’Application (C++, SmallTalk, Java) Préprocesseur des Déclarations Compilateur Binaires de l ’App Bibliothèque SGBDOO Edition de Lien Executable de l ’App MétaBase Base d ’Objets Accès aux Données Didier Donsez, 1995-99 ODMG/ODL/OQL, 7 ODL - Object Definition Language I Etend la syntaxe IDL de CORBA • interface = spécification d ’un type • Héritage simple • classe = interface + une implantation du type I Types prédéfinis • Collections paramétrées Set, List, Bag, Array • Exception • Type (introspection par la métabase) • Transaction interface Employee : Person { attribute int numemp; attribute float basesalary; attribute Struct Addr { string street, string city } address; relationship Dept dept inverse Dept::members; float salary(); } Didier Donsez, 1995-99 ODMG/ODL/OQL, 10 OQL - Object Query Language I Langage déclaratif d ’interrogation • compatibilité avec l ’ordre SELECT de SQL-92 • proposé par O2 Technology I Fonctionnalités générales • tous les types ODMG et identité d ’objet • requête select … from … where … • polymorphisme de collections sources • imbrication de requêtes, requêtes nommées • appel d ’opérateurs et de méthodes • opérateurs ensemblistes (union, intersect, except) • opérateur universel (for all) • quantifieur existentialiste (exists) • order by, group by, fonctions d ’agrégat (count, sum, min, max, avg) Didier Donsez, 1995-99 ODMG/ODL/OQL, 11 Un exemple en OQL I Exemple select cl.name, paid from ( select x from Companies c, c.clients x where c.address.city = "New York" ) cl where count (cl.orders) > 2 order by paid: sum ( select o.price from cl.orders o ) I Exercice: • A quelle question répond cette requête ? Didier Donsez, 1995-99 ODMG/ODL/OQL, 13 OML - Object Manipulation Language I Principe • étendre les langages procéduraux standards au support des objets persistants • persistance • navigation • collection • transaction • accès à des requêtes OQL • pas de transformation de la syntaxe du langage cible I 3 bindings spécifiés • OML/C++ (ODMG-93 et ODMG-II) • OML/SmallTalk (ODMG-93 et ODMG-II) • OML/Java (ODMG-II) Didier Donsez, 1995-99 ODMG/ODL/OQL, 14 Types de Persistance I Persistance Directe • l ’objet est crée Persistant ou Transitoire (Transient) • au commit de la transaction, les nouveaux objets persistants sont effectivement créés • les références sur un objet détruit sont dites pendantes (dangling) • cas de OML/C++ I Persistance par atteignabilité • un objet crée n ’est persistant au commit que s ’il est accessible par une racine de persistance (i.e. un objet nommé) • cas de OML/SmallTalk et de OML/Java • ces langages utilisent de base des ramasses miettes Didier Donsez, 1995-99 ODMG/ODL/OQL, 15 OML - C++ (i) Le binding vers le C++ I Binding des types utilisateurs • les interfaces utilisateurs T sont transformées en classes d ’objets persistants dérivant de la classe racine d_Object I Le binding utilise intensivement les templates C++ • Pour la référence sur les objets persistants • d_Ref<T>, d_Ref_Any • Pour les associations • d_Rel_List<T,MT>,d_Rel_Ref<T,MT>,d_Rel_Set<T,MT> • Pour les collections prédéfinies • super-classe d_Collection<T> • d_Set<T>, d_Bag<T>, d_Varray<T>, d_Dictionary<K,V>, d_Extent<T>, d_Iterator<T>, d_List<T> Didier Donsez, 1995-99 ODMG/ODL/OQL, 16 OML - C++ (ii) Compléments I Autres classes • d_Database, d_Date, d_OQL_Query, d_String, d_Time, d_Timestamp, d_Interval, d_Transaction, d_Error I Métaclasses • d_Access_Kind, d_Alias_Type, d_Attribute, d_Class, d_Collection_Type, d_Constant, d_Enumeration_Type, d_Exception, d_Inheritance, d_Keyed_Collection_Type, d_Meta_Object, d_Module, d_Operation, d_Parameter, d_Primitive_Type, d_Property, d_Ref_Type, d_Relationship, d_Scope, d_Structure_Type, d_Type Didier Donsez, 1995-99 ODMG/ODL/OQL, 19 OML - Imbrication des Langages I Appel de méthodes depuis un autre langage I Procédurale et déclaratif OQL_Query • exécution d ’une requête OQL • parcours procédural de la collection résultat Transaction inscription; inscription.begin(); d_Ref<Etudiant> jean = new(database) Etudiant("Jean"); Etudiants.insert(jean); d_OQL_query le_cours( "element(select c from Les_Cours c where c.sujet=$1)"); le_cours << "Math-sup"; d_Ref<Cours> c; d_OQL_execute(c,le_cours); jean->suit.insert(c); inscription.commit(); Didier Donsez, 1995-99 ODMG/ODL/OQL, 20 Relations avec OMG/CORBA I ODL • extension de l ’IDL de CORBA I ODA (Object Database Adaptor ) • Granularité importante des objets CORBA • des millions d ’objets persistants dans une BDOO • Adapteur (BOA) permettant à un sous ensemble des objets persistants de publier des services (leur méthodes) sur un bus CORBA • Annexe B du livre de l ’ODMG II I OQS (Object Query Service) • Requêtes OQL sur des collections d ’Objets CORBA. Didier Donsez, 1995-99 ODMG/ODL/OQL, 21 Relations avec l ’OMG/CORBA IDL et ODL Didier Donsez, 1995-99 ODMG/ODL/OQL, 22 Relations avec l ’OMG/CORBA ODA Object Database Adapter Didier Donsez, 1995-99 ODMG/ODL/OQL, 23 L ’architecture 3 tiers selon l ’ODMG Données SGBD-OO Données SGBD-R Données « wrapped legacy » Tier 3 Couche Données Tier 2 Couche Application Tier 3 Couche Client Modèle Objet ODMG Modèle Objet ODMG OQL SQL vers OQL IDL Java/C++ OQL IDL Java/C++ OQL IDL Java/C++ OQL Query Service IDL Java/C++ Modèle Objet OMG HTTP ActiveX Applets Java CORBA ODBC /JDBC 24 Object Definition Language (ODMG) Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.fr Didier Donsez, 1995-99 ODMG/ODL/OQL, 25 Motivations I ODMG • normalisation des langages d ’interface des SGBD-OO I Principe : indépendance entre le LDD et les LMD • LDD : ODL • LMD : C++, SmallTalk, Java • binding des définitions ODL vers les LDD des langages cibles I ODL étend la syntaxe de l ’IDL de OMG/CORBA Didier Donsez, 1995-99 ODMG/ODL/OQL, 26 Types ODL • Distinction entre Litéral et Objet I Litéral • Types atomiques • int, real, string • Constructeurs de type • énumération enum • structures struct, union • collections génériques : set, bag, list, array • chaque litéral est « caractérisé » par sa valeur • L1 et L2 sont égaux si leurs valeurs sont égales I Objet • définition de l ’interface • chaque objet est identifié par son identité • O1 et O2 sont égaux si leurs identifiants sont égaux Didier Donsez, 1995-99 ODMG/ODL/OQL, 27 Définition d ’une interface I interface = spécification d ’un type •super (Héritages simple et multiple) •extent, clés candidates •attributs attribute <type> <nomattr>; •associations et associations inverses relationship <type> <nomasso> inverse <nom-d-interface>::<nomasso>; •méthodes <type-retourné> <nommeth> (<type-paramêtre> : <type>, …) raise (<type-d-exception>); » <type-paramêtre> : in, out, inout I classe • interface + une implantation particulière du type • dans un des LMD disponibles Didier Donsez, 1995-99 ODMG/ODL/OQL, 28 Exemple interface Employee { attribute int numemp; attribute string name; attribute float basesalary; attribute Date birthday; attribute Struct Addr { string street, string city, int zip } address; attribute enum TypeEmp { worker,manager} typeEmp; attribute Set<string> phones; relationship Dept dept inverse Dept::members; float salary(); } interface Dept { attribute string name; attribute Struct Employee::Addr address; relationship Set<Employee> members inverse Employee::dept float totsalary() raise(Uncalculable); } Employee Dept worksin/ employees Didier Donsez, 1995-99 ODMG/ODL/OQL, 29 Cardinalités des Assocations Multiplicity of Relationships One-to-one 1-1 B A interface A { relationship B rb inverse B::ra; } interface B { relationship A ra inverse A::rb; } Many-to-one N-1 B A interface A { relationship B rb inverse B::ra; } interface B { relationship Set<A> ra inverse A::rb; } Many-to-many N-M B A interface A { relationship Set<B> rb inverse B::ra; } interface B { relationship Set<A> ra inverse A::rb; } Didier Donsez, 1995-99 ODMG/ODL/OQL, 30 Rôles • Nom des associations I Rôles asymétriques I Rôles symétriques interface Person { … relationship Person epoux inverse Person::epouse; relationship Person epouse inverse epous; relationship Dept dept inverse Dept::members; ... relationship Person conjoint inverse Person::conjoint; } Didier Donsez, 1995-99 ODMG/ODL/OQL, 32 Héritage I Héritage simple interface Person { attribute string name; attribute date_t birthday attribute Addr addr; } interface Employee : Person { attribute int basesalary; float salary(); } interface Manager : Employee { attribute int bonus; float salary(); } uploads/Finance/ bdodmgodloql-pdf.pdf
Documents similaires







-
15
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Sep 27, 2022
- Catégorie Business / Finance
- Langue French
- Taille du fichier 0.1626MB