le mod le de l odmg n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Le modèle de l'ODMG PowerPoint Presentation
Download Presentation
Le modèle de l'ODMG

Loading in 2 Seconds...

play fullscreen
1 / 42

Le modèle de l'ODMG - PowerPoint PPT Presentation


  • 120 Views
  • Uploaded on

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. Contexte. Object Database Management Group Fondé en septembre 1991 par 5 constructeurs: O2 Technology

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Le modèle de l'ODMG' - albina


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
le mod le de l odmg
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 contexte
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 le mod le de l odmg
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.
quelques d finitions de l odmg
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
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++.

OQL

ODL

OML C++

OML Java

OML Smalltalk

SGBDO

slide6

• Editeur de classes

• Manipulateur d’objets

• Bibliothèques graphiques

• Débogueur, éditeur

Outils Interactifs

LOO

Persist.

ODL

OQL

OQL = Object Query Language

ODL = Object Defintion Language

LOO = Langage Orienté Objet

• Persistance • Concurrence

• Identification • Fiabilité

• Accès • Sécurité

Gérant d'objets

Architecture conforme de l'ODMG

  • Processus de génération d'un fichier exécutable
lien avec les langages de programmation
Lien avec les langages de programmation

PL : programming

langage

Application

Source en PL

Déclaration en

ODL ou PL ODL

compilateur

de PL

pré-compilateur

de déclarations

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.)

Interface, classe, littéral
hi rarchie des types
Un modèle objet-valeur.

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).

Hiérarchie des types

Type

Interface

Littéral

Classe

l objet instance d une 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 sontdes 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.
propri t s de tout type d objet
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
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
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
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
Hiérarchie des types ODMG

Type

Object

Literal

Collection Object

Atomic Object

Structured Object

Atomic Lit.

Collection Lit.

Structured Lit.

Date

Time

Timestamp

Interval

Set <>

Bag <>

List <>

Array <>

Dictionary<>

Structure<>

Date

Time

Timestamp

Interval

Set <>

Bag <>

List <>

Array <>

Dictionary<>

Long

Short

Ulong

Ushort

Float

Double

Character

Boolean

string

octet

enum<>

attributs
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.
les associations relationships
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

exemples
Exemples
  • Exemple :
    • 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
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
m ta mod le du mod le odmg
Méta-modèle du modèle ODMG

support

Class

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

add_member

remove_member

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

1

exemple de base de donn es

Voiture

nveh

couleur

marque

km

rouler()

Exemple de base de données

Habite

Appartient

Appart.

étage

no

rue

code

ville

Personne

nss

nom

prenom

datenais

vieillir()

dormir()

Loge

Possède

Boire

Inférieur

Vin

cru

millésime

degré

qualité

Buveur

type

état

boire()

Employé

fonction

salaire

primes

travailler()

Bu_par

Supérieur

EmployéBuveur

d finitions associ es
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();

};

d finitions associ es suite
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
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.
concepts additionnels
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 des Requêtes
  • Forme générale d'une requête
    • 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.
requ te simple
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
parcours d association monovalu e
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
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>
imbrication de select en r sultat
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>)>
invocation de m thodes
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
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 )
d finition d objets via requ tes
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"
quantification
Quantification
  • Quantificateur universel
    • 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"
calcul d agr gats op rateur group by
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.)>
expressions de collections
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)
4 int gration aux langages c java smalltalk
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
gestion de transactions
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
OML Java
  • Persistance par atteignabilité
    • 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
oml java1
OML Java ...
  • Transparence des opérations
    • 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

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();

Intégration de OQL
5 conclusion
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 ...