Le modèle de l'ODMG 1. Contexte 2. Le modèle de l'ODMG et ODL

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Transformation de documents XML
Systèmes de Gestion de Bases de Données Orientés Objet
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Approfondissement du langage
Fonctionnalités des SGBD
C.
Introduction aux Entity Beans
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
TP 3-4 BD21.
Bases de données orientées-objets
Optimisation de Requêtes
Bases de données orientées-objets
TECHNIQUES DES SGBDO 1. Qu'est-ce qu'un SGBDO ?
Introduction à la POO: Les classes vs les objets
Algorithme et programmation
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Programmation orientée objet
Contrôles d'accès aux données
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Modélisation E/R des Données
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Professeur Serge Miranda
1 Objectifs de ce cours (I21) Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde Résumé du cours précédent.
Structures de données IFT-2000
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Structures de données IFT-2000
Introduction au paradigme orienté-objet (suite)
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Les concepts et les méthodes des bases de données
COURS DE PROGRAMMATION ORIENTEE OBJET :
Standard Template Library
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
BD Relationnelles versus BD Objets Fariza Tahi
La notion de type revisitée en POO
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
TECHNIQUES DES SGBDO 1. Qu'est-ce qu'un SGBDO ?
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
Créer des packages.
1 BDs Orientées Objets Witold LITWIN. 2 Pourquoi ? F Les BDs relationnelles ne sont pas adaptées aux applications CAD/CAM, cartes géo... F le problème.
Optimisation de requêtes
1 Extension du modèle de composants CORBA avec accès concurrent à des données partagées Travail réalisé par : Landry BREUIL PFE, ISIMA Encadrants : Gabriel.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
2 Processus de conception de BD
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Modélisation des documents: DTD et Schéma
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Héritage Conception par Objet et programmation Java
Les vues Une vue: c’est une relation virtuelle. Définie par:
L T I Laboratoire de Téléinformatique 2 Projet de semestre Parseur XML basé sur la DTD : Buts –Utiliser la grammaire définissant un type de fichiers XML.
Initiation aux SGBD Frédéric Gava (MCF)
Nouvelles Technologies Internet & Mobile
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Introduction Module 1.
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Introduction SGDBOO Sommaire Définition d’un SGBD (6 services)
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Transcription de la présentation:

Le modèle de l'ODMG 1. Contexte 2. Le modèle de l'ODMG et ODL Un exemple de base 3. Le langage OQL 4. OML : intégration aux langages C++, Java et Smalltalk 5. Conclusion 1

1. Contexte Object Database Management Group Fondé en septembre 1991 par 5 constructeurs: O2 Technology Objectivity Object Design Ontos Versant Version 2.0 96 avec 10 auteurs POET Soft, Barry & Ass., American Man. Syst., Windward Sol., Lucent De nombreux observateurs externes participent à l'élaboration. Le groupe propose de définir des concepts standards pour la conception des SGBDO. 2

2. Le modèle de l'ODMG C'est une extension du modèle de l'OMG. L'OMG a proposé un modèle standard pour les objets, supporté par le langage IDL (Interface Definition Langage), également de l'OMG. Les BD objets nécessitent des adaptations/extensions : instances de classes, collections, associations, persistance, transactions. Ce modèle est un candidat pour un profil BD de l'OMG. Mis en oeuvre à l'aide du langage ODL, langage de niveau conceptuel, supportant un modèle abstrait implémenté dans les langage C++, Smalltalk, Java. 5

Quelques définitions de l'ODMG ODL (Object Definition Langage) Langage de définition de schéma des bases de données objet OQL (Object Query Langage) Langage d'interrogation de bases de données objet basé sur des requêtes SELECT proches de celles du langage SQL OML (Object Manipulation Langage) Langage de manipulation intégré à un langage de programmation objet permettant la navigation, l'interrogation, la mise à jour d'objets persistants. L'OMG en propose trois variantes : OML C++, OML Smalltalk, OML Java.

Interfaces d'accès à un SGBDO (ODMG) C'est une adaptation du modèle objet de l'OMG. Elle est possible à partir des langages de propgrammation orientés objet tel le langage C++. ODL OQL OML C++ OML Java OML Smalltalk SGBDO

Architecture conforme de l'ODMG Processus de génération d'un fichier exécutable Gérant d'objets LOO Persist. OQL OQL = Object Query Language ODL = Object Defintion Language LOO = Langage Orienté Objet • Persistance • Concurrence • Identification • Fiabilité • Accès • Sécurité ODL Outils Interactifs • Editeur de classes • Manipulateur d’objets • Bibliothèques graphiques • Débogueur, éditeur

Lien avec les langages de programmation PL : programming langage Déclaration en ODL ou PL ODL Application Source en PL pré-compilateur de déclarations compilateur de PL ODBMS Runtime Application Binaire Editeur de liens Exécutable

Interface, classe, littéral Définition d'Interface (Interface Definition) Spécification du comportement (ou d'une de ses parties) observable par les utilisateurs pour un type d'objet. Définition de classe (Class Definition) Spécification du comportement et d'un état observable par les utilisateurs pour un type d'objet. Extension de Classe (Class extension) Collection caractérisée par un nom contenant les objets de la classe. Définition de Littéral (Literal Definition) Spécification d'un type de valeur correspondant à un état abstrait, sans comportement. Exemple : déclaration de type en langage C++ (entier, flottant, structure, classe, etc.)

Hiérarchie des types Un modèle objet-valeur. Deux type d'héritage Type Valeurs = littéraux entier, réel, chaînes de caractères, ... structure<>, enum<> Les objets implémentent des interfaces (comportement) peuplent des extensions de classes (comportement + état) Deux type d'héritage comportement (interface) de structure abstraite ou d'état d'objet, notés EXTENDS (ne pas confondre avec EXTENT). Type Interface Littéral Classe

L'Objet, instance d'une classe Identifié par un OID (chaîne binaire spécifique) OIDs gérés par le SGBDOO pour distinguer les objets, OID permet de retrouver l'objet, reste invariant durant sa vie, OIDs peuvent être choisis par les utilisateurs. Persistant ou transient Les objets de la BD sont des objets persistants, peuvent être nommés par les utilisateurs et sont uniques dans la base. Les objets transients restent en mémoire pendant l'exécution de la requête. Peut être simple ou composé atomique (spécifié par l'utilisateur par des définitions de classes), collection d'objets ou de littéraux, structurés. 6

Propriétés de tout type d'objet Gestion à partir d'un ensemble d'opérations héritées création, verrouillage, comparaison, copie, suppression Instanciation à partir d'une interface "usine" interface ObjectFactory { Object new(); }; L'héritage des opérations est implémenté dans le SGBDOO interface Object { void lock(in Lock_Type mode) raises (LockNotGranted); // verrou bloquant boolean try_lock(in Lock_Type mode); // verrou non bloquant boolean same_as(in Object anObject); // comparaison d'identifiant Object copy(); void delete() ; }; //constructeur copie et destructeur

Objets structurés Les objets structurés s'inspirent des objets SQL2. Ils permettent la gestion du temps. DATE // objet date avec les méthodes associés INTERVAL // objet durée pour une structure TIME // heure avec les fuseaux horaires associés TIMESTAMP // encapsulation d'une date et d'une durée Il sont la version objet des littéraux correspondants. Ils sont fournis avec des méthodes ajout d'intervalles extraction de mois, jour, année ...

Objets collections (1/2) Instances de collections homogènes Exemples : Set<t>, Bag<t>, List <t>, Array<t>, Dictionary<t,v> Héritent d'une interface commune Collection Interface Collection : Object { unsigned long cardinality(); boolean is_empty(), is_ordered(), allows_duplicates(), contains_element(in any element); void insert_element(in any element); void remove_element(in any element) raises(ElementNotFound); Iterator create_iterator() ; Bidirectionalterator create_bidirectional_iterator() ; };

Objets collections 2/2) Un itérateur permet d'itérer sur les éléments : Interface Iterator {void reset() ; any get_element() raises (NoMoreElements); void next_position raises (NoMoreElements); replace_element (in any element) raises(InvalidCollectionType) ; ...}; Chaque collection est dotée d'une interface spécifique. Exemple : Collection Dictionnaire Collection de doublets <clé-valeur>, la clé est unique. Interface Dictionary : Collection { exception keyNotFound(any key); // Gestion des exceptions void bind(in any key, in any value); // insertion void unbind (in any key)raise(KeyNotFound); // suppression void lookup (in any key)raise(KeyNotFound); // recherche boolean contains_key(in any key) ; } // test d'appartenance

Hiérarchie des types ODMG Object Literal Atomic Object Collection Object Structured Object Atomic Lit. Collection Lit. Structured Lit. Set <> Bag <> List <> Array <> Dictionary<> Date Time Timestamp Interval Long Short Ulong Ushort Float Double Character Boolean string octet enum<> Set <> Bag <> List <> Array <> Dictionary<> Structure<> Date Time Timestamp Interval 10

Attributs Propriété permettant de mémoriser un littéral ou un objet. Peut être interprété comme la définition des deux méthodes Set_value Get_value Caractéristique d'un attribut son identificateur, le type de ses valeurs légales. L'implémentation d'un attribut n'est pas obligatoire. 11

Les Associations (Relationships) Associations binaires, bi-directionnelles de cardinalité (1:1), (1:N), (N:M). Opérations Add_member, Remove_member Traverse, Create_iterator_for Boire Vins Buveurs Est_bu_par Fonction de traversée 12

Exemples Exemple : Le SGBDO garantit le maintient de l'intégrité Interface buveurs { ... Relationship list<vins> boire inverse vins::est_bu_par; }; Interface vins { ... Relationship set<buveurs> est_bu_par inverse buveurs::boire;}; Le SGBDO garantit le maintient de l'intégrité Références dans les deux sens si inverse déclaré. Ce n'est pas le cas pour un attribut valué par un objet attribut boire list<vins> En l'absence de chemin inverse, il n'y a pas d'intégrité référentielle.

Opérations Représentent le comportement du type de l'objet Propriétés: nom de l'opération nom et type des arguments (in) nom et type des paramètres retournés (out) nom des conditions d'erreurs (raises) Exemple: Interface buveurs { ... int boire(in vins v, in int qte) raises(novins); }; //signature 14

Méta-modèle du modèle ODMG Class support Instantiate 1 key_list extent_name super_class * extends * 1 Operation signature has invoke return return_abnormally * * Property Object OID has_name? names class create delete exits same_has? Attribute Traversal path attr_name attr_type path_name to_cardinality to_type set_value get_value traverse creator_iterator Relationship define 2 + Type, littéraux, interface, .... add_member remove_member 1 15

Exemple de base de données Appartient Habite Voiture nveh couleur marque km rouler() Personne nss nom prenom datenais vieillir() dormir() Appart. étage no rue code ville Loge Possède Boire Inférieur Employé fonction salaire primes travailler() Buveur type état boire() Vin cru millésime degré qualité Bu_par Supérieur EmployéBuveur

Définitions associées Interface Personne { // interface abstraite pour implémentation dans classe attribute string nss ; attribute string nom ; attribute string prenom ; attribute date datenaissance; relationship Appart habite inverse Appart::loge; // relationship relationship Voiture Possede inverse Voiture::Appartient; // relationship short vieillir(); void dormir() short age(); }; 16

Définitions associées (suite) class Employé : Personne(extent Employés key nss) //classe avec extension de personne + { attribute enum fonct{ingénieur, secrétaire, analyste, programmeur} fonction; attribute float salaire ; attribute list<float> primes ; //attribut multi-valué relationship Employé inferieur inverse supérieur; relationship Employé supérieur inverse inférieur; void travailler(); };

3. Le langage OQL Permet un accès facile à une base objet via un langage interactif autonome, par intégration dans C++ ou Smalltalk ou Java. Offre un accès non procédural pour permettre des optimisations automatique (ordonnancement, index,…), pour garder une syntaxe proche de SQL 92. Reste conforme au modèle de l'ODMG application d'opérateurs aux collections extensions ou imbriquées, création de résultats littéraux, d'objets, de collections, … Support de mises à jour limitées via les méthodes. 17

Concepts additionnels Expression de chemin mono-valuée Séquence d'attributs ou associations mono-valuées de la forme X1.X2…Xn telle que chaque Xi à l'exception du dernier contient une référence à un objet ou un littéral unique sur lequel le suivant s'applique. Utilisable en remplacement d'un attribut SQL. Collection dépendante Collection obtenue à partir d'un objet car imbriquée dans l'objet ou pointée par ce dernier. Utilisable dans la clause FROM.

Forme des Requêtes Forme générale d'une requête Type du résultat Expressions fonctionnelles à mixer avec Bloc select étendu Select [<type résultat>] (<expression> [, <expression>] ...) From x in <collection> [, y in <collection>]... Where <formule> Type du résultat Automatiquement inféré par le SGBD Toute Collection est autorisée (Bag par défaut) Il est possible de créer des objets en résultats. La syntaxe est très libre avec un contrôle de type fort. 18

Requête Simple Calcul d'une expression ((string) 10*5/2) || "toto" ===> string Accès à un attribut d'un objet nommé mavoiture.couleur ===> littéral string 20

Parcours d'association monovaluée sélection de structure en résultat (défaut) select struct (name: b.nom, city: b.habite.adresse.ville) from b in buveurs where b.type = 'gros' ===> littéral bag <struct(Name,City)>

Parcours d'association multivaluée Utilisation de collections dépendantes. Les collections dépendantes sont parcourues par des variables imbriquées derrière la clause From ce qui permet de traverser des chemin multivalués correspondant à des associations [1:N] ou [M:N]. Exemple : recherche du nom et prénom des buveurs de Volnay. select b.nom, b.prenom from b in buveurs, v in b.boire where v.cru = "volnay" ==> littéral bag<struct<nom:string,prenom:string> 21

Imbrication de Select en résultat Calcul pour chaque employé d'une structure constitué de son nom et de ses inférieurs mieux payés. select distinct struct (nom : e.nom, inf_mieux_payes : list (select i from i in e.inferieur where i.salaire > e.salaire)) from e in employes ===> littéral de type set <struct (nom: string, inf_mieux_payes : list <employes>)> 22

Invocation de méthodes Possible en résultat ou dans le critère de sélection select distinct e.nom, e.habite.adresse.ville, e.age() from e in employes where e.salaire > 10000 and e.age() < 30 ===> littéral de type set <struct>

Création d'Objets Définition : expressions de constructions Soit C une classe, p1, ..., pn des propriétés de la classe et e1, ..., en des expressions. Alors C(p1 : e1, ..., pn : en) est une expression de construction. Exemples de création d'objet E1 : création d'objet par appel de constructeur ayant une requête pour argument. employe (nss:15603300036029, nom:"jean", salaire: 100000) E2 : recherche de tous les buveurs sans emploi employe (select struct(nss:b.nss, nom:b.nom, salaire: 4000) from b in buveurs where not exist e in employes : e.nss=b.nss ) 23

Définition d'objets via Requêtes Le résultat d'une requête peut être nommé (littéral ou objet nommé). Syntaxe de définition de macros Define <nom> as <question> Permet de définir un objet nommé <nom> calculé par la question Exemple Define Cesar as Select b From b in Buveurs Where b.prenom = "Jules" 25

Quantification Quantificateur universel Quantificateur existentiel for all x in collection : predicat(x) Exemple : for all b in Buveurs : b.age < 18 Quantificateur existentiel exists x in collection: predicat(x) Exemple : exists v in Employés.posséde : v.marque = "Renault" 26

Calcul d'Agrégats, opérateur Group By Similaire à SQL. Possibilité d'utiliser des prédicats Exemple select e from e in employes group by (bas : e.salaire < 7000, moyen : e.salaire >= 7000 and e.salaire < 21000, haut : e.salaire >= 21000) ===>struct<bas: set(emp.),moyen:set(emp.),haut:set(emp.)> 27

Expressions de Collections Conversion de collections element (select v.marque from v in voitures where v.numero = "120 abc 75") ===> string Mise à plat (applatissage) des collections flatten (select b.nom, select v.millesime from v in b.boire where v.cru = "volnay" from b in buveurs) 28

4. Intégration aux langages C++, Java, Smalltalk Implémentation du modèle abstrait adaptation des concepts, types, collections. Nécessité d'adapter le modèle certains concepts n’existent pas dans le langage interface en C++ ==> classe association en C++ et Java ==> attributs rôles de type Ref <T> clés ==> pas de clés ! Nécessité d’intégrer OQL 33

Gestion de transactions Objet Transaction créé par Factory begin() pour ouvrir une transaction ; commit() pour valider les mises à jour de la transaction ; abort() pour défaire les mises à jour de la transaction ; checkpoint() = commit() + begin(), sans relâcher verrous ; join() pour récupèrer l'objet transaction dans la thread ; leave() pour dissocier un objet transaction de la thread ; Possibilités d'imbriquer des transactions; Contrôle de concurrence niveau objet (explicite ou défaut) ; Ouverture et fermeture des bases

OML Java Persistance par atteignabilité Adaptation des types. classes connues du SGBDO objets capables de persister nommage par objets "database" opérations bind, unbind, lookup tout objet nommé est racine de persistance tout objet référencé par un objet persistant est persistant. Adaptation des types. Package collections ODMG set, bag, list, varray : collection 34

OML Java ... Transparence des opérations Gestion des accès BD opérations identiques sur un objet transient ou persistant. Gestion des accès BD lecture objet en cas de référence absente écriture en mise à jour ou commit, les choix du développeur restent libres.

Intégration de OQL Interrogation directe des collections Exemple possibilité d'appliquer un prédicat à une collection ajout d'une fonction query à chaque collection Exemple set<object> lesbonsvins; lesBonsVins = Vins.query("qualité = "Bons"") Fourniture de la classe OQLQuery avec opérations OQLQuery(String question) bind(Object parameter) execute() Exemple set BuveursCru; query = OQLQuery( "select distinct b from b in buveurs, v in b.boire where v.cru = $1" ); query.bind("volnay"); BuveursCru = query.execute(); 35

5. Conclusion Tentative de création d'un standard pour SGBDO vise à la portabilité des applications langage de requêtes très complet (et complexe) modèle abstrait et adaptation C++, Smalltalk, Java. Extension de SQL pour collections imbriquées des différences avec SQL2 (sémantique, typage fort, …) des déficiences (contrôle, vues,…) des spécificités (nomination des objets, des requêtes, …) difficile à implémenter ... 36