63
ODMG Copyright Serge Miranda Part III Introduction à l’ Introduction à l’ ODMG ODMG Professeur Serge Miranda [email protected] Master2 STIC « MBDS » www.mbds-fr.org « Bases de données : architectures, modèles relationnels et objets, SQL3 , ODMG» Dunod 2002

ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda [email protected] Master2 STIC « MBDS » « Bases

Embed Size (px)

Citation preview

Page 1: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Introduction à l’ Introduction à l’ ODMGODMG

Professeur Serge Miranda

[email protected]

Master2 STIC « MBDS »

www.mbds-fr.org

« Bases de données : architectures, modèles relationnels et objets, SQL3 , ODMG» Dunod 2002

Page 2: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Un peu de PUB …Un peu de PUB …Iivre de référence…Iivre de référence…

Page 3: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Consortium ODMGConsortium ODMG

Créé en 1991 par Rick Cattell (SUN, Javasoft) comme Créé en 1991 par Rick Cattell (SUN, Javasoft) comme sous groupe de l’ OMG (sous groupe de l’ OMG (Object Management Group) Object Management Group) avec les éditeurs suivants: 02 Tech., Objectivity, Object avec les éditeurs suivants: 02 Tech., Objectivity, Object Design, Ontos, VersantDesign, Ontos, Versant

OMG : CORBA,…OMG : CORBA,…

plus de 50 organisations de l’industrie et de plus de 50 organisations de l’industrie et de l’informatique en 2000l’informatique en 2000

(Lucent, Lockheed, CA, Microsoft, Baan, ...)(Lucent, Lockheed, CA, Microsoft, Baan, ...)

Objectifs:Objectifs: Promouvoir les OO DBMS,Promouvoir les OO DBMS, FUD FUD , au delà des , au delà des

niches et standard avant …SQL3 !niches et standard avant …SQL3 ! Créer un standard pour garantir l’indépendance Créer un standard pour garantir l’indépendance

entre OODBMS (entre OODBMS (Portability)Portability)

Page 4: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Historique du Historique du standard « OO »standard « OO »

Objectif « portabilité Objectif « portabilité Code »Code »

Première réunion à l’initiative de Rick Première réunion à l’initiative de Rick Catell chez Sun en Sept 91Catell chez Sun en Sept 91

ODMG 1.0 (1993) : 5 EditeursODMG 1.0 (1993) : 5 Editeurs ODL, OQL, Interface C++, SmalltalkODL, OQL, Interface C++, Smalltalk

ODMG 2.0 (1996) : 10 Editeurs (Poet, ODMG 2.0 (1996) : 10 Editeurs (Poet, Lucent, Windward, American Man, Barry)Lucent, Windward, American Man, Barry)

Interface JavaInterface Java (Java Binding) (Java Binding) , , Meta Model, OIFMeta Model, OIF

ODMG 3.0 (2000)ODMG 3.0 (2000) enrichissement interface Javaenrichissement interface Java Accent sur intégration avec OMG et X3H2 ( SQL3)Accent sur intégration avec OMG et X3H2 ( SQL3)

Page 5: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Composants du standard ODMG 3.0Composants du standard ODMG 3.0

SGBDOO

OQL OML C++ OML Smalltalk

Adaptation du modèle objet de l'OMGAdaptation du modèle objet de l'OMG Interfaces d'accès à un SGBD OOInterfaces d'accès à un SGBD OO

OML Java

ODL

OIF

Page 6: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Composants du standard Composants du standard ODMG 3.0ODMG 3.0

Modèle de données Objet dérivé de Modèle de données Objet dérivé de l’OMGl’OMG

Langages de spécificationsLangages de spécifications ODL : langage de définition d’objetsODL : langage de définition d’objets OIF (OIF (object Interchange Formatobject Interchange Format) : ) :

import/exportimport/export Langage de requête : OQL (avec Langage de requête : OQL (avec

retour sur base SQL)retour sur base SQL) OML (avec Liaisons)OML (avec Liaisons)

C++, SMALLTALK et JAVAC++, SMALLTALK et JAVA

Page 7: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Modèle ODMG : Modèle ODMG : modèle « OBJET-VALEUR modèle « OBJET-VALEUR

»»CLASSE d’OBJETSCLASSE d’OBJETS (OBJECT CLASS) (OBJECT CLASS) ? ?

- OID invariant (pour « objet ») et - OID invariant (pour « objet ») et CP pour classeCP pour classe- « - « VALUE » de l ensemble des objets VALUE » de l ensemble des objets ((extensionextension))- - ATTRIBUTESATTRIBUTES- METHODS- METHODS- liens - liens bidirectionnelsbidirectionnels binaires entre classes binaires entre classes (REF, INVERSE)(REF, INVERSE)

Note : pas de chemin inverse pas d’intégrité référentielleNote : pas de chemin inverse pas d’intégrité référentielleManipulation : Manipulation : NAVIGATION via des pointeursNAVIGATION via des pointeurs Héritage : d’état et de comportement Héritage : d’état et de comportement

Page 8: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Modèle ODMG : Modèle ODMG : modèle OBJET-VALEURmodèle OBJET-VALEUR

Extension du modèle de l'OMGExtension du modèle de l'OMG– l'OMG a proposé un modèle standard pour les objetsl'OMG a proposé un modèle standard pour les objets– le modèle est supporté par le langage IDL (def. le modèle est supporté par le langage IDL (def.

interface)interface)– les BD objets nécessitent des adaptations/extensions les BD objets nécessitent des adaptations/extensions

TIPSTIPS» instances de classes, collections, associationsinstances de classes, collections, associations

» Persistance, transactionsPersistance, transactions

Page 9: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

ODMG et propriétés RICE ODMG et propriétés RICE

RR * * HERITAGE MULTIPLEHERITAGE MULTIPLE (C++) (C++)

II * * OIDOID

CC * STRUCTURE* STRUCTURE

* * COLLECTIONSCOLLECTIONS : :

SET, BAG, LIST, ARRAY, DictionarySET, BAG, LIST, ARRAY, Dictionary

* pointeurs bidirect. * pointeurs bidirect. REFREF et et INVERSEINVERSE

EE * « Types » avec méthodes* « Types » avec méthodes

Page 10: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Type

Object Literal

Atomic Obj. Structured Obj.Collection Obj Atomic Lit.

LongShortUlongUshortFloatDoubleCharacterBooleanstringoctetenum<>

DateTimeTimestampInterval

Set <>Bag <>List <>Array <>Dictionary<>

Structured Lit.Collection Lit.

Structure<>DateTimeTimestampInterval

Set <>Bag <>List <>Array <>Dictionary<>

Hiérarchie de « Types »Hiérarchie de « Types »

<VALEUR>

Page 11: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Meta MODELEMeta MODELE

• Principe de Base

• Description du modèle Objet

• Les Meta ObjetsModules, Operations, Exceptions,

Constants, Properties (relationship et Attributes), TypeDefinitions, Interfaces, Classes, Collections, Specifiers, Operands

Page 12: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Instantiate

has

Property

support

2 define

extends

*

* *

1

1

Relationship

add_memberremove_member

ObjectOIDhas_name?namesclasscreatedeleteexistsame_has?

key_listextent_namesuper_class

Attributeattr_nameattr_typeset_valueget_value

Traversal path

path_nameto_cardinalityto_typetraversecreator_iterator

Operation

signatureinvokereturnreturn_abnormally

Class

*

+ Type, littéraux, interface, ....

1

Méta-modèle du modèle ODMGMéta-modèle du modèle ODMG

Page 13: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

OQL OQL (F.Bancilhon, Dasfaa 95)(F.Bancilhon, Dasfaa 95)

requêtes ad-hoc interactives type   « SQL »requêtes ad-hoc interactives type   « SQL » - simplification de programmation via des - simplification de programmation via des

requêtes imbriquéesrequêtes imbriquées- optimisation de requêtes- optimisation de requêtes- indépendance de données- indépendance de données- opérateurs d'enrichissement des données- opérateurs d'enrichissement des données- Support TIPS - Support TIPS

Navigation et .. "Surf" via des expressions de Navigation et .. "Surf" via des expressions de chemin et des suivis de pointeurs ( tout en chemin et des suivis de pointeurs ( tout en préservant les interrogations associatives)préservant les interrogations associatives)

Page 14: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

1. Expression de chemin mono-valuée dans SELECT/WHERE

- Séquence d'attributs ou associations (« relationship ») mono-valués de la forme X1.X2…Xn telle que chaque Xi à l'exception du dernier contienne une référence à un objet ou un litéral unique sur lequel le suivant s'applique.

- Utilisable en place d'un attribut SQL dans SELECT ou WHERE

2) Collection dépendante <Multivaluée> dans FROM

- Collection obtenue à partir d'un objet, soit parce qu'elle est imbriquée dans l'objet ou pointée par l'objet.

- Imbrication de COLLECTIONS dans FROM

OQL (nouveautés « SQL »)

Page 15: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Forme des RequêtesForme des Requêtes Forme générale d'une requêteForme générale d'une requête

– Bloc « SELECT » étenduBloc « SELECT » étendu

» Select [<type résultat>] (<Select [<type résultat>] (<expressionexpression> [, <> [, <expressionexpression>] ...)>] ...)

» From x in <From x in <collectioncollection> [, y in <> [, y in <collectioncollection>]...>]...

» Where <formule avec Where <formule avec expressionsexpressions>> Type résultatType résultat

– automatiquement inféré par le SGBDautomatiquement inféré par le SGBD

– toute toute collectioncollection est possible (bag par défaut) est possible (bag par défaut)

– création possible d’ objets en résultatscréation possible d’ objets en résultats Syntaxe très libre, fort contrôle de typeSyntaxe très libre, fort contrôle de type

Page 16: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Concepts de base par Concepts de base par l’exemplel’exemple

Définition du schéma Définition du schéma

- soit en ODL (Extension IDL), soit - soit en ODL (Extension IDL), soit OIF OIF

- soit en C++/Smalltalk/java- soit en C++/Smalltalk/java

LIENS :LIENS :

- REF : pointeur C++ persistant - REF : pointeur C++ persistant

- INVERSE : extension pour - INVERSE : extension pour intégrité référentielleintégrité référentielle

Page 17: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple ODLExemple ODL

Liaison C++Liaison C++

CLASS employe { CLASS employe {

E# INT,E# INT,

Nom STRING,Nom STRING,

Adresse ADDRESS <Adresse ADDRESS <autre classeautre classe>>

//méthodes...}//méthodes...}

Page 18: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple ODLExemple ODL

CLASS CLASS pilote : employepilote : employe { {Nbre-H-Vol# INT,Nbre-H-Vol# INT,salaire FLOAT,salaire FLOAT,SET REF <vol> assure INVERSE est-SET REF <vol> assure INVERSE est-assuré_parassuré_par //méthodes...}//méthodes...}

CLASS vol {CLASS vol {V# STRING,…V# STRING,…REF <pilote> est_assuré_par INVERSE REF <pilote> est_assuré_par INVERSE assure,assure,REF <avion> utilise INVERSE est_utilisé_dansREF <avion> utilise INVERSE est_utilisé_dans,.,.VD...}VD...}

Page 19: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple ODLExemple ODL

CLASS avion : {CLASS avion : {av# INT,av# INT,

avnom STRING,avnom STRING,

……

SET REF <vol> est_utilisé_dans SET REF <vol> est_utilisé_dans INVERSE utiliseINVERSE utilise

……}}

Page 20: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Notes Notes

FAIRE TABLEAU DES LIENS FAIRE TABLEAU DES LIENS ENTRE CLASSES pour traiter les ENTRE CLASSES pour traiter les questionsquestions

Les liens entre classe (« jointures ») Les liens entre classe (« jointures ») se feront se feront EXCLUSIVEMENTEXCLUSIVEMENT par par suivi de pointeurs (bidirectionnels) suivi de pointeurs (bidirectionnels) définis définis EXPLICITEMENT EXPLICITEMENT dans le dans le schéma (par défaut dans clauses schéma (par défaut dans clauses FROM imbriquées)FROM imbriquées)

Page 21: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple OQLExemple OQLQuels sont les numéros des vols Quels sont les numéros des vols

assurés par un pilote de nom assurés par un pilote de nom 'Serge' ?'Serge' ?

Page 22: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple OQLExemple OQLQuels sont les numéros des vols assurés par Quels sont les numéros des vols assurés par

un pilote de nom 'Serge' ?un pilote de nom 'Serge' ?

1) 1) SELECT v.v#SELECT v.v#FROM FROM

v IN vol v IN vol <IN collection><IN collection>

p IN v.est_assure_parp IN v.est_assure_par

WHERE p.Nom = 'Serge' ;WHERE p.Nom = 'Serge' ;

Page 23: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple OQLExemple OQLQuels sont les numéros des vols Quels sont les numéros des vols

assurés par un pilote de nom assurés par un pilote de nom 'Serge' ?'Serge' ? 2 2 Select v.v# Select v.v#

from v IN volfrom v IN volwherewhere

v.est_assure_parv.est_assure_par.Nom.Nom=‘Serge’;=‘Serge’;

<<Expression monovaluéeExpression monovaluée X1.X2.X3X1.X2.X3>>

Page 24: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple OQLExemple OQL Quels sont les noms des avions Quels sont les noms des avions

conduits par un pilote Niçois ?conduits par un pilote Niçois ?<Parcours d’ associations multivaluées <Parcours d’ associations multivaluées

en utilisant des collections en utilisant des collections dépendantes>dépendantes>

Page 25: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple OQLExemple OQL Quels sont les noms des avions conduits Quels sont les noms des avions conduits

par un pilote Niçois ?par un pilote Niçois ?<Parcours d’ associations multivaluées en <Parcours d’ associations multivaluées en

utilisant des collections dépendantes>utilisant des collections dépendantes>1) 1) SELECT SELECT a.avnoma.avnomFROMFROM a in avion a in avion <in COLLECTION<in COLLECTION>>

v in a.est_utilisé_dans v in a.est_utilisé_dans <in COLLECTION><in COLLECTION>

p in v.est_assuré_parp in v.est_assuré_parWHEREWHERE p.adr = ‘ Nice ’ ;p.adr = ‘ Nice ’ ;

Page 26: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple OQLExemple OQL Quels sont les noms des avions Quels sont les noms des avions

conduits par un pilote Niçois ?conduits par un pilote Niçois ?<Parcours d’ associations multivaluées en <Parcours d’ associations multivaluées en

utilisant des collections dépendantes>utilisant des collections dépendantes>2)2)SELECT SELECT a.avnoma.avnomFROMFROM a in avion a in avion <in COLLECTION<in COLLECTION>>

v in a.est_utilisé_dans v in a.est_utilisé_dans <in COLLECTION><in COLLECTION>

WHEREWHERE v.est_assuré_par.adrv.est_assuré_par.adr= ‘Nice’= ‘Nice’ <Expression><Expression>

Page 27: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

ExercicesExercices

Q1 : Noms des pilotes Niçois qui Q1 : Noms des pilotes Niçois qui assurent un vol au départ de Nice assurent un vol au départ de Nice avec un avion localisé à Nice ?avec un avion localisé à Nice ?

Q2 :Noms des pilotes qui habitent Q2 :Noms des pilotes qui habitent dans la ville de localisation d’un dans la ville de localisation d’un Airbus ?Airbus ?

Page 28: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

RéponsesRéponses

Q1Q1

SELECT p.plnomSELECT p.plnom

From From p in PILOTEp in PILOTE

v in p.assurev in p.assure

a in v.utilisea in v.utilise

WhereWhere p.adr = ‘Nice’ and a.loc = ‘Nice’ and p.adr = ‘Nice’ and a.loc = ‘Nice’ and v.VD= ‘Nice’;v.VD= ‘Nice’;

(ou Where p.adr= ‘Nice’ and (ou Where p.adr= ‘Nice’ and v.utilise.locv.utilise.loc= ‘Nice ‘ = ‘Nice ‘ and v.VD = ‘Nice’ ;and v.VD = ‘Nice’ ;

Page 29: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

RéponsesRéponses

Q2Q2 Créer liens multivalués HABITE inverse EST-Créer liens multivalués HABITE inverse EST-

LOCALISE-DANS entre Pilote et AvionLOCALISE-DANS entre Pilote et Avion

SELECT SELECT p.plnomp.plnom

From From p in PILOTEp in PILOTE

a in p.HABITE <collection>a in p.HABITE <collection>

WhereWhere a.avnom = ‘Airbus’ ;a.avnom = ‘Airbus’ ;

Page 30: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

OQLOQL Expression de chemin monovaluéeExpression de chemin monovaluée à la place à la place

d’un attribut SQL de la forme X1.X2.X3 : chaque d’un attribut SQL de la forme X1.X2.X3 : chaque Xi contient une référence à un objet uniqueXi contient une référence à un objet unique

SELECT imbriqués possibles, SELECT imbriqués possibles, méthodes dans where ou selectméthodes dans where ou select

Quantificateur dans FROMQuantificateur dans FROM universel (for all x in collection: prédicat) universel (for all x in collection: prédicat)

Exemple : Exemple : « for all a in Avions: « for all a in Avions: a.cap<350 »a.cap<350 »existentiel (exists x in collection..)existentiel (exists x in collection..)

GROUP BY possibleGROUP BY possible

Page 31: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple quantificateur Exemple quantificateur universeluniversel

Quels sont les noms des pilotes Quels sont les noms des pilotes qui conduisent TOUS les Airbus qui conduisent TOUS les Airbus localisés à Nice ?localisés à Nice ?

Page 32: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple quantificateur Exemple quantificateur universeluniversel

Quels sont les noms des pilotes qui Quels sont les noms des pilotes qui conduisent TOUS les Airbus localisés conduisent TOUS les Airbus localisés à Nice ?à Nice ?

Select p.plnomSelect p.plnomFrom p in piloteFrom p in pilote

V in p.assureV in p.assureFor all a in V.utilise : a.avnom = For all a in V.utilise : a.avnom =

‘airbus ‘airbus ’ ’ and and a.loc = ‘Nice’;a.loc = ‘Nice’;

Page 33: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple GROUP BYExemple GROUP BY

Partitionner les instances de la classe Partitionner les instances de la classe VOL en 2 groupes : les vols avant VOL en 2 groupes : les vols avant 9H (nom partition : TOT) et les vols 9H (nom partition : TOT) et les vols après 18H (nom : TARD )après 18H (nom : TARD )

Select v Select v

from v in VOL from v in VOL

group by (tot : v.HD<9, tard : group by (tot : v.HD<9, tard : v.HD>18) v.HD>18) 

Page 34: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

OQLOQL

Join exprimé Join exprimé EXCLUSIVEMENT EXCLUSIVEMENT par une par une expression de chemin sur expression de chemin sur lien.PTR lien.PTR prédéfini de manière symétriqueprédéfini de manière symétrique

( notation '.')( notation '.') : : "le programmeur redevient "le programmeur redevient un navigateur (un Surfeur ?)« un navigateur (un Surfeur ?)« 

Langage de requête très Langage de requête très COMPLET/COMPLEXE ‘double COMPLET/COMPLEXE ‘double paradigme) paradigme) difficile à implanterdifficile à implanter

notenote : amélioration cosmétique SQLà : amélioration cosmétique SQLà partir de la version ODMG 2.0partir de la version ODMG 2.0

"from c IN class1" remplacé par "from c IN class1" remplacé par "from class1 c""from class1 c"

Page 35: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

OIFOIF

Langage de spécifications pourLangage de spécifications pour ImporterImporter ExporterExporter

Echanger des objets entre 2 Echanger des objets entre 2

basesbases Fournir une documentationFournir une documentation Piloter les « tests suites »Piloter les « tests suites »

Page 36: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

OIFOIF

OIF doit supporter tous les états OIF doit supporter tous les états des objets d ’une BD ODMGdes objets d ’une BD ODMG

OIF est un langage de OIF est un langage de spécificationspécification

OIF respecte au mieux les OIF respecte au mieux les standards ANSI et STEPstandards ANSI et STEP

Mot clé OIF : Mot clé OIF : typetype, , attributattribut, et , et identifiant identifiant d’une relation d’une relation

Page 37: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

OIF ExempleOIF Exemple

Prenons par exemple la définition ODL :Interface Person {

attribute string Name;relationship Employer

inverse Company : : Employees ;relationship Property

inverse Company : :Owner ;} ;Interface Company {

relationship set<Person> Employeesinverse Person : : Employer ;

relationship Person Ownerinverse Person : :Property ;

} ;

Dans le fichier OIF les objets seront créés ainsi :Personne1 Person{Name «Julio»}Personne2 Person{«Pedro»}Entreprise1 Company {Employees {Personne1,Personne2}}

Page 38: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

OIF (Commandes)OIF (Commandes)

Pour exporter les objets d ’une base : Pour exporter les objets d ’une base :

odbdump <database name>odbdump <database name>

Pour IMporter des objets depuis un ou Pour IMporter des objets depuis un ou plusieurs fichiers OIF : plusieurs fichiers OIF :

odbload <database name> <file odbload <database name> <file 1>…<file n>1>…<file n>

Page 39: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

INTEGRATION à C++, Java, Smal.INTEGRATION à C++, Java, Smal. Implémentation du modèle abstraitImplémentation du modèle abstrait

– mapping des concepts mapping des concepts – mapping des typesmapping des types– mapping des collectionsmapping des collections

Nécessité d'adapter le modèleNécessité d'adapter le modèle– certains concepts n’existent pas dans le langagecertains concepts n’existent pas dans le langage

interfaceinterface en C++ ==> en C++ ==> classeclasse

association association en C++ et Java ==> attributs roles de type en C++ et Java ==> attributs roles de type Ref Ref <T> <T>

clés ==> pas de clés !clés ==> pas de clés !

Nécessité d’intégrer OQLNécessité d’intégrer OQL

Page 40: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Java BindingJava Binding(OML Java)(OML Java)

Système de Types de Données Système de Types de Données UniquesUniques

Syntaxe de Java à respecterSyntaxe de Java à respecter

Gestion automatique de Stockage Gestion automatique de Stockage ((Persistence By ReachabilityPersistence By Reachability))

Page 41: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

JAVA ODL JAVA ODL

Types Simples d’ODL -> types simples Types Simples d’ODL -> types simples JavaJava

Types Complexes (Collections) ->Types Complexes (Collections) ->

Interfaces des Collections Interfaces des Collections

(Dset, Dbag, etc. de Java 1.2)(Dset, Dbag, etc. de Java 1.2)

Pas de Gestion Automatique des Pas de Gestion Automatique des LIENS BIDIRECTIONNELSLIENS BIDIRECTIONNELS

Page 42: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

JAVA OML/OQLJAVA OML/OQL

JAVA OMLJAVA OML

Déclaration Opérations en JavaDéclaration Opérations en Java Des Classes Pour Des Classes Pour

Database, Transaction, CollectionsDatabase, Transaction, Collections

Java OQLJava OQL Méthode query() de DCollectionMéthode query() de DCollection Classe OQLQueryClasse OQLQuery

Page 43: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

JAVA OML/OQLJAVA OML/OQL

Persistance par atteignabilité (Persistance par atteignabilité (reachabilityreachability))

– classes connues du SGBDOOclasses connues du SGBDOO– objets capables de persisterobjets capables de persister– nommage par objets «database»nommage par objets «database»

-opérations bind, unbind, lookup-opérations bind, unbind, lookup

-tout objet nommé est racine de persistance-tout objet nommé est racine de persistance

– tout objet référencé par un objet persistant est tout objet référencé par un objet persistant est persistantpersistant

Mapping des typesMapping des types Package collections ODMG :Package collections ODMG :set, bag, list, varray : set, bag, list, varray :

collectioncollection

Page 44: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Gestion de transactionsGestion de transactions Objet Transaction créé par FactoryObjet Transaction créé par Factory

– begin() pour ouvrir une transaction ;begin() pour ouvrir une transaction ;– commit() pour valider les mises à jour de la transaction ;commit() pour valider les mises à jour de la transaction ;– abort() pour défaire les mises à jour de la transaction ; abort() pour défaire les mises à jour de la transaction ; – checkpoint() = commit() + begin(), sans relâcher verrous checkpoint() = commit() + begin(), sans relâcher verrous – join() pour récupérer l'objet transaction dans la thread ;join() pour récupérer l'objet transaction dans la thread ;– leave() pour dissocier un objet transaction de la thread ;leave() pour dissocier un objet transaction de la thread ;– Possibilités d'imbriquer des transactionsPossibilités d'imbriquer des transactions– Contrôle de concurrence niveau objet (explicite ou Contrôle de concurrence niveau objet (explicite ou

défaut) ;défaut) ; Ouverture et fermeture des basesOuverture et fermeture des bases

Page 45: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

VerrouillageVerrouillage Verrouillage Verrouillage ImpliciteImplicite ( (pendant traversée pendant traversée

graphe objets)graphe objets) ou ou ExpliciteExplicite ( (LOCK ou LOCK ou TRY_LOCK dans Interface Objet) TRY_LOCK dans Interface Objet) avec avec isolation niveau 3 de SQL2isolation niveau 3 de SQL2 (qui évite (qui évite lectures lectures salessales, , fantômesfantômes et lectures et lectures non non reproductiblesreproductibles) et ) et transactions ACIDtransactions ACID Interface Interface TransactionFactoryTransactionFactory

Transaction..Transaction..Transaction..…Transaction..…

LOCKLOCK ReadRead WriteWrite Upgrade (Upgrade (avant Read ou Write pour éviter livelock)avant Read ou Write pour éviter livelock)

Page 46: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

ExemplesExemples

2D2D ThésaurusThésaurus

Avec SGBD POETAvec SGBD POET

Page 47: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple 2DExemple 2D//classe qui représente un pointimport COM.POET.odmg.*;import COM.POET.odmg.collection.*;

class Point2D{ int x; int y; Point2D(){ } Point2D(int pi_x, int pi_y){

x = pi_x;y = pi_y;

} void move(int pi_x, int pi_y){

x = pi_x;y = pi_y;

} void moveRelative(int pi_x, int pi_y){

x += pi_x;y += pi_y;

}}

Page 48: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple 2DExemple 2D// Classe qui représente un polygone 2D// Classe qui représente un polygone 2Dimport COM.POET.odmg.*;import COM.POET.odmg.*;import COM.POET.odmg.collection.*;import COM.POET.odmg.collection.*;class Polygone2D {class Polygone2D { SetOfObject pointsSetOfObject points; //les points du polygone; //les points du polygone public Polygone2D() { //Constructeurpublic Polygone2D() { //Constructeur

points = new SetOfObject();points = new SetOfObject(); }} public void ajoutePoint(Point2D pr_point){ //rajouter un Point2Dpublic void ajoutePoint(Point2D pr_point){ //rajouter un Point2D

points.add(pr_point);points.add(pr_point); }} public int public int nombreDeCotenombreDeCote() throws () throws PolygoneExceptionPolygoneException { {

if (points.size() > 2)if (points.size() > 2) return points.size();return points.size();else else throw new PolygoneException("Ce n'est pas un polygone");throw new PolygoneException("Ce n'est pas un polygone");

}}}}

Page 49: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple 2D (OQL)Exemple 2D (OQL) //combien d'hexagone existent-ils dans notre base//combien d'hexagone existent-ils dans notre baseSELECT COUNT(*)SELECT COUNT(*)FROM FROM Polygone2DExtentPolygone2DExtent h hWHERE h.nombreDeCote = 6WHERE h.nombreDeCote = 6

//tous les points qui forment des octagones//tous les points qui forment des octagonesSELECT pSELECT pFROM FROM

pol IN Polygone2DExtent,pol IN Polygone2DExtent,p IN p IN pol.pointspol.points

WHERE pol.WHERE pol.nombreDeCotenombreDeCote = 8 = 8

//tous les point qui sont dans des cercles d'un rayon superieure à 10//tous les point qui sont dans des cercles d'un rayon superieure à 10SELECT pSELECT pFROM (SELECT c FROM Cercle2DExtent c WHERE c.rayon > 10) FROM (SELECT c FROM Cercle2DExtent c WHERE c.rayon > 10) AS xAS x,, Point2DExtent pPoint2DExtent pWHEREWHERE

x.x.contientcontient(p)(p)

Page 50: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple Thésaurus Exemple Thésaurus CompletComplet

ODLODLINTERFACEINTERFACE document document( ( extentextent documents documentskey key doc#) : doc#) : persistentpersistent{attribute integer doc#,{attribute integer doc#, attribute string titre ;attribute string titre ; attribute string editeur ;attribute string editeur ; attribute date date-publi ;attribute date date-publi ;attribute integer nb_pages ;attribute integer nb_pages ;}}

Page 51: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple ThésaurusExemple Thésaurus

relationshiprelationship LIST<auteur> LIST<auteur>

est_ecrit_par INVERSE a_ecrit;est_ecrit_par INVERSE a_ecrit;

relationshiprelationship SET <mot_cle> contient SET <mot_cle> contient INVERSE est_dans ;INVERSE est_dans ;

Page 52: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple ThésaurusExemple Thésaurus

INTERFACE mot_cle (extent mots-cleINTERFACE mot_cle (extent mots-cle key ident ) : persistentkey ident ) : persistent{attribute string ident ;{attribute string ident ;}}relationship SET<document>est_dans relationship SET<document>est_dans

INVERSE contientINVERSE contientrelationship SET <mot_cle> relationship SET <mot_cle> est_pere_de INVERSE est_fils_deest_pere_de INVERSE est_fils_derelationship SET<mot_cle> est_synonyme relationship SET<mot_cle> est_synonyme

Page 53: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple ThésaurusExemple Thésaurus

INVERSE est_synonymeINVERSE est_synonyme... est_voisin_de...... est_voisin_de...

INTERFACE auteur: personne (extent INTERFACE auteur: personne (extent auteurs)auteurs)

relationship LIST<document> a_ecritrelationship LIST<document> a_ecritINVERSE est_ecrit_parINVERSE est_ecrit_par

INTERFACE personne …. INTERFACE personne ….

Page 54: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple ThésaurusExemple Thésaurus

Liaison C++ Liaison C++ CLASSCLASS document document{ integer doc#,{ integer doc#, string titre;string titre; string editeur ;string editeur ; date date_de_publi;date date_de_publi; integer nb_pages;integer nb_pages;}}

Page 55: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple ThésaurusExemple Thésaurus

list list Ref Ref <auteur> a_ete_ecrit_par <auteur> a_ete_ecrit_par inverse a_ecrit ;inverse a_ecrit ; set set Ref Ref <mot_cle>contient<mot_cle>contientinverse est_dans;inverse est_dans; CLASS auteur : personne CLASS auteur : personne List Ref<document>a_ecritList Ref<document>a_ecritinverse a-ete_ecrit_par ;inverse a-ete_ecrit_par ;

Page 56: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple ThésaurusExemple Thésaurus

<thesaurus ; liaison C++ ><thesaurus ; liaison C++ >

CLASS mot_cleCLASS mot_cle

{ string ident };{ string ident };

Set Ref <document> est_dansSet Ref <document> est_dans

inverse contient;inverse contient;

Page 57: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple ThésaurusExemple ThésaurusList REF<mot_cle>est_synonyme_deList REF<mot_cle>est_synonyme_deinverse est_synonyme_de;inverse est_synonyme_de;Set REF< mot_cle>est_pere_de Set REF< mot_cle>est_pere_de inverse est_fils_de;inverse est_fils_de;Set REF<mot_cle>est_fils_deSet REF<mot_cle>est_fils_deinverse est_pere_de;inverse est_pere_de;Set REF<mot_cle>est_voisin_de Set REF<mot_cle>est_voisin_de inverse est_voisin_de;inverse est_voisin_de;Set REF<document>documents; Set REF<document>documents; Set REF<mot_cle>mots_cle; Set REF<mot_cle>mots_cle; Set REF<auteur>auteurs;Set REF<auteur>auteurs;

Page 58: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Ex Thésaurus (OQL)Ex Thésaurus (OQL)

Documents concernant le "software"?Documents concernant le "software"?Select dSelect dFrom From

m in mots_clem in mots_cled in m.est_dansd in m.est_dans

Where m.ident = 'software' ;Where m.ident = 'software' ;OuOu

Select D fromSelect D fromD in documentsD in documentsM in D. contientM in D. contient

Where M.ident = « software Where M.ident = « software »; »;

Page 59: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple Thésaurus Exemple Thésaurus (OQL)(OQL)

Documents concernant le "software" dont Documents concernant le "software" dont le titre commence par "concepts" ?le titre commence par "concepts" ?Select dSelect dFrom From

m in mots_cle m in mots_cle ?… ?…

Page 60: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple Thésaurus Exemple Thésaurus (OQL)(OQL)

Documents concernant le "software" dont le titre Documents concernant le "software" dont le titre commence par "concepts" ?commence par "concepts" ?Select dSelect dFrom From

m in mots_clem in mots_clec in m.est_voisin_de c in m.est_voisin_de s in m.est_synonyme_des in m.est_synonyme_def in m.est_fils_def in m.est_fils_ded in set (m.est_dans, c.est_dans, d in set (m.est_dans, c.est_dans,

s.est_dans, f.est_dans) s.est_dans, f.est_dans) Where m.ident = 'software" and d.titre = Where m.ident = 'software" and d.titre =

Concepts%; Concepts%;

Page 61: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple Thésaurus Exemple Thésaurus (SGBD Poet)(SGBD Poet)

import COM.POET.odmg.*;import COM.POET.odmg.collection.*;

class Document { int num_doc; String titre; String editeur; java.util.Date date_de_publication; int nb_pages; ListOfObject est_ecrit_par; // liste des auteurs SetOfObject contient; // ensemble des mots clés

public Document(int num_doc, String titre, String editeur, java.util.Date date_de_publication, int nb_pages){

this.num_doc = num_doc; this.titre = titre; this.editeur = editeur; this.date_de_publication = date_de_publication; this.nb_pages = nb_pages;

}

public void ajouteAuteur(Auteur auteur){est_ecrit_par.add(auteur);

}

public void ajouteMotCle(MotCle motCle){contient.add(motCle);

}}

Page 62: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple Thésaurus Exemple Thésaurus (SGBD Poet)(SGBD Poet)

import COM.POET.odmg.*;import COM.POET.odmg.collection.*;

class MotCle{ String ident; SetOfObject est_dans; // liste des documents qui contiennt ce mot clé ListOfObject est_synonyme_de; // liste des synonymes de ce mot clé SetOfObject est_pere_de; // ensemble des mots clé père SetOfObject est_fils_de; // ensemble des mots clé fils SetOfObject est_voisin_de; // ensemble des mots clé voisin

public MotCle(String ident){this.ident = ident;

} public void ajouteSynonyme(MotCle synonyme){

est_synonyme_de.add(synonyme); } public void ajouteVoisin(MotCle voisin){

est_voisin_de.add(voisin); } public void ajoutePere(MotCle pere){

est_pere_de.add(pere); } public void ajouteFils(MotCle fils){

est_fils_de.add(fils); } public void ajouteDocument(Document document){

est_dans.add(document); }}

Page 63: ODMG Copyright Serge Miranda Part III Introduction à l ODMG Professeur Serge Miranda Serge.miranda@unice.fr Master2 STIC « MBDS »  « Bases

ODMG Copyright Serge Miranda Part III

Exemple Thésaurus avec Exemple Thésaurus avec Poet (OQL)Poet (OQL)

// tous les documents concernant le software et// dont l'auteur est Serge Miranda

SELECT dFROM

m IN MotCleExtent,c IN m.est_voisin_de,s IN m.est_synonyme_de,f IN m.est_fils_de,d IN SET(m.est_dans, c.est_dans, s.est_dans, f.est_dans),aut IN d.est_ecrit_par

WHERE m.ident = 'software' AND aut.nom = 'Miranda' AND aut.prenom='Serge'