LA PROPOSITION DE L'ODMG - PowerPoint PPT Presentation

1 / 39
About This Presentation
Title:

LA PROPOSITION DE L'ODMG

Description:

{ attribute enum fonct{ing nieur, secr taire, analyste, programmeur} fonction; attribute float salaire ; ... – PowerPoint PPT presentation

Number of Views:211
Avg rating:3.0/5.0
Slides: 40
Provided by: georgesg8
Category:

less

Transcript and Presenter's Notes

Title: LA PROPOSITION DE L'ODMG


1
LA PROPOSITION DE L'ODMG
  • 1. Contexte
  • 2. Le modèle de l'ODMG et ODL
  • 3. Un exemple de base
  • 3. Le langage OQL
  • 4. OML C, Java et Smalltalk
  • 5. Conclusion

2
1. CONTEXTE
  • Object Database Management Group
  • Fondé en septembre 91 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
  • Nombreux observateurs externes
  • Propose un "standard" pour les SGBDO

3
Contenu de la Proposition
  • Adaptation du modèle objet de l'OMG
  • Interfaces d'accès à un SGBDO

ODL
OQL
OML C
OML Java
OML Smalltalk
SGBDO
4
Architecture
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
5
2. LE MODELE
  • Extension du modèle de l'OMG
  • l'OMG a proposé un modèle standard pour les
    objets
  • le modèle est supporté par le langage IDL (def.
    interface)
  • les BD objets nécessitent des adaptations/extensio
    ns
  • instances de classes
  • collections
  • associations
  • persistance
  • transactions
  • Un candidat pour un profil BD de l'OMG

6
Type, Interface et classe
  • Un modèle objet-valeur
  • Valeurs littéraux
  • entier, réel, string, ...
  • strctureltgt, enumltgt
  • Les objets
  • implémentent des interfaces (comportement)
  • peuplent des extensions de classes (comportement
    état)
  • Deux type d'héritage
  • comportement (interface)
  • d'état (classe)

Type
Interface
Littéral
Classe
7
Les Objets Instances
  • Identifiés par des OIDs
  • gérés par le SGBD OO pour distinguer les objets
  • permet de retrouver les objets, reste invariant
  • Peuvent être nommés par les utilisateurs
  • Persistants ou transiants
  • les objets persistants sont les objets BD, les
    autres restant en mémoire
  • Peuvent être simple ou composés
  • atomiques, collections, structurés

8
Propriétés communes
  • un ensemble d'opération héritées pour
  • création, verrouillage, comparaison, copie,
    suppression
  • création des objets par des "usines"
  • interface ObjectFactory Object new()
  • héritage d'un type racine
  • interface Object
  • void lock(in Lock_Type mode) raises
    (LockNotGranted)
  • boolean try_lock(in Lock_Type mode)
  • boolean same_as(in Object anObject)
  • Object copy() void delete()

9
Les objets collections
  • Support de collections homogènes
  • Setlttgt, Baglttgt, List lttgt, Arraylttgt,
    Dictionaryltt,vgt
  • 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
    ()

10
Objets collections ...
  • 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 à une interface spécifique
  • Exemple Dictionnaire
  • une collection de doublets ltclé-valeurgt
  • Interface Dictionary Collection
  • exception keyNotFound(any key)
  • 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

11
Objets structurés
  • Des objets structurés permettent de gérer le
    temps
  • DATE
  • INTERVAL
  • TIME
  • TIMESTAMP
  • Il sont la version objets des litéraux
    correspondants
  • fournissent en plus des opérations
  • ajout d'intervalles
  • extraction de mois, jour, an
  • ...

12
Hiérarchie de Types
Type
Object
Literal
Collection Obj
Atomic Obj.
Structured Obj.
Atomic Lit.
Collection Lit.
Structured Lit.
Date Time Timestamp Interval
Set ltgt Bag ltgt List ltgt Array ltgt Dictionaryltgt
Structureltgt Date Time Timestamp Interval
Set ltgt Bag ltgt List ltgt Array ltgt Dictionaryltgt
Long Short Ulong Ushort Float Double Character Boo
lean string octet enumltgt
13
Les Attributs
  • Une propriété permettant de mémoriser un
    litéral ou un objet
  • Peut être vu comme deux fonctions
  • Set_value
  • Get_value
  • Propriétés
  • son nom
  • type de ses valeurs légales
  • Un attribut n'est pas forcément implémenté.

14
Les Associations (Relationships)
  • Associations binaires, bi-directionnelles de
    cardinalité (11), (1N), (NM).
  • Opérations
  • Add_member, Remove_member
  • Traverse, Create_iterator_for

Boire
Vins
Buveurs
Est_bu_par
Fonction de traversée
15
Exemples
  • Exemple
  • Interface buveurs ... Relationship listltvinsgt
    boire inverse vinsest_bu_par
  • Interface vins ... Relationship setltbuveursgt
    est_bu_par inverse buveurs boire
  • Le SGBDO est responsable du maintient de
    l'intégrité
  • Référence dans les deux sens si inverse déclaré
  • Ce n'est pas le cas pour un attribut valué par un
    objet
  • attribut boire listltvinsgt
  • pas de chemin inverse, pas d'intégrité
    référentiel

16
Les Opérations
  • Représentent le comportement du type
  • 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

17
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
18
Exemple de base
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
19
Exemple de définition
  • 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 Appartloge
    // relationship
  • relationship Voiture Possede inverse
    VoitureAppartient
  • short vieillir()
  • void dormir()
  • short age()

20
Exemple (suite)
  • class Employé Personne(extent Employés key nss)
  • //classe avec extension de personne
  • attribute enum fonctingénieur, secrétaire,
    analyste, programmeur fonction
  • attribute float salaire
  • attribute listltfloatgt primes //attribut
    multi-valué
  • relationship Employé inferieur inverse
    supérieur
  • relationship Employé supérieur inverse
    inférieur
  • void travailler()

21
3. LE LANGAGE OQL
  • Permettre un accès facile à une base objet
  • via un langage interactif autonome
  • par intégration dans C ou Smalltalk ou Java
  • Offrir un accès non procédural
  • permetttre des optimisations automatique
    (ordonnancement, index,)
  • garder une syntaxe proche de SQL 92
  • Rester conforme au modèle de l'ODMG
  • application d'opérateurs aux collections
    extensions ou imbriquées
  • permettre de créer des résultats littéraux,
    objets, collections,
  • Supporter des mises à jour limitées via les
    méthodes

22
Concepts nouveaux
  • Expression de chemin mono-valuée
  • Séquence d'attributs ou associations mono-valués
    de la forme X1.X2Xn telle que chaque Xi à
    l'exception du dernier contient une référence à
    un objet ou un litéral unique sur lequel le
    suivant s'applique.
  • Utilisable en place d'un attribut SQL
  • Collection dépendante
  • Collection obtenu à partir d'un objet, soit
    pacequ'elle est imbriquée dans l'objet ou pointée
    par l'objet.
  • Utilisable dans le FROM

23
Forme des Requêtes
  • Forme générale d'une requête
  • Expressions fonctionnelles mixer avec
  • Bloc select étendu
  • Select lttype résultatgt (ltexpressiongt ,
    ltexpressiongt ...)
  • From x in ltcollectiongt , y in ltcollectiongt...
  • Where ltformulegt
  • Type résultat
  • automatiquement inféré par le SGBD
  • tout collection est possible (bag par défaut)
  • il est possible de créer des objets en résultats
  • Syntaxe très libre, fort contrôle de type

24
Requête Simple
  • Calcul d'une expression
  • ((string) 105/2) "toto"
  • gt string
  • Accéder un attribut d'un objet nommé
  • mavoiture.couleur
  • gt litteral string

25
Parcours d'association monovaluées
  • avec sélection de structure (défaut)
  • select struct (name b.nom,
  • city b.habite.adresse.ville)
  • from b in buveurs
  • where b.type 'gros'
  • gt littéral bag ltstruct(Name,City)gt

26
Parcours d'association multivaluées
  • Utilisation de collections dépendantes
  • select b.nom, b.prenom
  • from b in buveurs, v in b.boire
  • where v.cru "volnay"
  • gt litteral bagltstructltnomstring,prenomstring
    gt

27
Résultats Imbriqués
  • Imbrication des select au niveau select
  • select distinct struct (nom e.nom,
  • inf_mieux_payes
  • select i
  • from i in e.inferieur
  • where i.salaire gt e.salaire))
  • from e in employes
  • gt litteral de type set ltstruct (nom
    string,
  • inf_mieux_payes bag ltemployesgt)gt
  • et aussi au niveau du FROM (requête collection)

28
Invocation de méthodes
  • En résultat ou dans le critère
  • select distinct e.nom,
  • e.habite.adresse.ville, e.age()
  • from e in employes
  • where e.salaire gt 10000 and e.age() lt 30
  • gt litteral de type set ltstructgt

29
Création d'Objets
  • Expressions de constructions
  • Si C est le nom d'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
  • Création d'objet
  • employe (nss15603300036029, nom"jean", salaire
    100000)
  • employe (select struct(nssb.nss, nomb.nom,
    salaire 4000)
  • from b in buveurs
  • where not exist e in employes e.nssb.nss )

30
Définition d'objets via Requêtes
  • Définition de macros
  • Define ltnomgt as ltquestiongt
  • permet de définir un objet de nom ltnomgt calculé
    par la question
  • Exemple
  • Define Cesars as
  • Select b
  • From b in Buveurs
  • Where b.prenom "Jules"

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

32
Calculs d'Agrégats
  • Similaire à SQL
  • avec possibilité de prédicats
  • select e
  • from e in employes
  • group by (bas e.salaire lt 7000,
  • moyen e.salaire gt 7000 and
    e.salaire lt 21000,
  • haut e.salaire gt 21000)
  • gtstructltbas set(emp.),moyenset(emp.),hautset
    (emp.)gt

33
Expressions de Collections
  • Conversion de collections
  • element (select v.marque
  • from v in voitures
  • where v.numero "120 abc 75") gt string
  • Applatissage des collections
  • flatten (select b.nom, select v.millesime
  • from v in b.boire
  • where v.cru "volnay"
  • from b in buveurs)

34
4. INTEGRATION A C, Java, Smal.
  • Implémentation du modèle abstrait
  • mapping des concepts
  • mapping des types
  • mapping des collections
  • Nécessité d'adapter le modèle
  • certains concepts nexistent pas dans le langage
  • interface en C gt classe
  • association en C et Java gt attributs roles de
    type Ref ltTgt
  • clés gt pas de clés !
  • Nécessité dintégrer OQL

35
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

36
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
  • Mapping des types
  • Package collections ODMG
  • set, bag, list, varray collection

37
OML Java ...
  • Transparence des opérations
  • même opérations sur objet transiant ou persistant
  • Gestion des accès BD
  • lecture objet en cas de référence absente
  • écriture en maj ou au commit
  • choix libres à limplémenteur

38
Intégration de OQL
  • Interrogation directe des collections
  • possibilité d'appliquer un prédicat à une
    collection
  • ajout d'une fonction query à chaque collection
  • Exemple
  • setltobjectgt 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()

39
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 mapping C, Smal., 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 ...
Write a Comment
User Comments (0)
About PowerShow.com