Transcript objets

TECHNIQUES DES SGBDO

 1. Présentation du modèle Objet  2. Définition d'un SGBDO  3. Architectures des SGBDO  4. Persistance des objets  5. Langages de requêtes  6. Optimisation des requêtes  7. Conclusion

J.PHILIPP d'après G. Gardarin

‹#›

1. Caractéristiques du modèle objet

 Objet  Identifiant   Attributs Opérations   Classe Héritage  Polymorphisme  Objets complexes ou collections  Messages  Base de Données à Objets ‹#›

J.PHILIPP d'après G. Gardarin

Modélisation des objets

 Objet (Object)  Abstraction informatique d'une entité du monde réel caractérisée par une

identité

, un

état

, un

comportement

.

 Identifiant d'objet (Object Identifier)  Référence unique et invariante attribuée à un objet lors de sa création permettant de le désigner et de le retrouver tout au long de son existence.

 Attribut (Attribute) 

Caractéristique

d'un objet désignée par un

identificateur

permettant de mémoriser une ou plusieurs valeurs, un ou plusieurs identifiants d'objets.

‹#›

J.PHILIPP d'après G. Gardarin

Encapsulation des objets

  Opération (Operation)  Représentation d'une action applicable sur un objet, caractérisée par un en-tête appelé

signature

définissant son nom, ses arguments d'appel (identificateur et type) et le type de ses paramètres de retour.

Méthode - fonction membre  Autres appellations des opérations sur les objets, utilisées dans les langage de programmation à objet tels le langage C++ ou Smalltalk.

 Interface d'objet (Object Interface)  Ensemble des signatures des méthodes, y compris les lectures et écritures d'attributs

publics

, applicables depuis l'extérieur d'un objet.

‹#›

J.PHILIPP d'après G. Gardarin

Définitions des types d'objet

  Classe (Class)  Implémentation d'une ou plusieurs interfaces sous la forme d'un cadre permettant de spécifier un ensemble de propriétés d'objets (attributs et opérations) et de créer (

instancier

) des objets dotés de ces propriétés.

 Une classe spécifie la structure et le comportement commun d'objets qu'elle permet de créer (instanciation).

Méthode multi-classes  Méthode pouvant s'appliquer à des instances de différentes classes, en général définie dans une classe, les autres classes étant des paramètres de la classe courante.

‹#›

J.PHILIPP d'après G. Gardarin

Liens d'héritage entre classe

   Généralisation (Generalization)  Lien hiérarchique entre deux classes spécifiant que les objets de la classe supérieure sont plus généraux que ceux de la classe de niveau inférieur.

Héritage (Inheritance)    Transmission automatique des propriétés d'une classe vers une classe dérivée.

La

classe de niveau supérieur

est appelée

super classe

ou

classe de base

.

La

classe de niveau inférieur

est appelée

sous-classe

ou

classe dérivée

et hérite de tous les attributs et propriétés de la classe de base.

Héritage multiple (Multiple Inheritance)  Type d'héritage dans lequel une classe dérivée hérite de plusieurs classes de base.

‹#›

J.PHILIPP d'après G. Gardarin

Redéfinition, surcharge, polymorphisme

‹#›  Redéfinition (Overrriding)  Spécification dans une classe dérivée d'une méthode existante dans une classe de base, avec une implémentation différente.

 Surcharge (Overloading)  Possibilité de définir plusieurs codes pour une même méthode, le code approprié étant déterminé selon le type des arguments d'appel.

 Polymorphisme (Polymorphism)  Faculté pour une méthode d'avoir différentes signatures avec un code spécifique attaché à chaque signature.

J.PHILIPP d'après G. Gardarin

Collections d'objets (1/2)

 Collection (Collection) 

Conteneur

(Container) typé désigné par un identificateur, contenant des éléments multiples organisés selon une structure particulière auxquels on accède par des opérations spécifiques au conteneur.

 Exemples  l

'ensemble

(

Set

) permet de définir des collections

sans doublon

,  le

sac

(

Bag

) permet de définir des collections

doublon

,

non ordonnées non ordonnées avec

 la

liste doublon

, (

List

) permet de définir des collections

ordonnées avec

 le

tableau indexées

.

(

Array

) permet de définir des collections

ordonnées

, ‹#›

J.PHILIPP d'après G. Gardarin

Collections d'objets (2/2)

  Classe paramétrée (Template)  Classe avec des arguments dont le type peut être paramétré avec différentes implémentations selon le type.

Agrégation (Aggregation)  Association entre deux classes exprimant que les objets de la classe cible sont des composants de ceux de la classe source.

 L'agrégation traduit la relation "fait partie de ".

‹#›

J.PHILIPP d'après G. Gardarin

Message

 Message  Ensemble composé d'un identificateur d'objet

récepteur

, d'un identificateur d'une méthode et de ses arguments permettant, suite à son émission, l'invocation de la méthode publique de l'objet récepteur.

 Dans les environnement objets, ces derniers communiquent donc par des messages comportant le nom d'une méthode et ses arguments.

  Un objet peut réceptionner un message et réagir à ce dernier.

L'

émission d'un message

est une implémentation flexible et contrôlée du traditionnel appel de procédure par valeur des langages de programmation.

‹#›

J.PHILIPP d'après G. Gardarin

Base de donnees a objets

 Schéma de Base de Données Objet (Object BD Schema)  Description d'une base de données à objets incluant les définitions de classes, d'attributs, d'opérations ainsi que les liens entre les classes.

‹#›

J.PHILIPP d'après G. Gardarin

2. Définition d'un SGBDO

   D'après The Object-Oriented Database System Manifesto  Atkinson, Bancilhon, Dewitt, Ditrich, Maier, Zdonick ( DOOD'89)    Fonctionnalités Base de Données nécessaires  la

persistance

d'un objet sur un disque ou sa

transience

(objet dont la durée de vie en mémoire n'excède pas celle du programme créateur), la concurrence d'accès, la fiabilité des objets (restauration obligatoire en cas de panne), la facilité d'interrogation à partir de la valeur des propriétés.

   Fonctionnalités BD optionnelles la distribution en architecture client-serveur, les modèles de transaction évolués (imbriquées), la gestion des versions d'objets pour retour à un état antérieur.

‹#›

J.PHILIPP d'après G. Gardarin

Définitions

 Objet persistent (Persistent Object)  Objet stocké dans la base de données dont la durée de vie est supérieure au programme qui le crée.

 Objet transient (Transient Object)  Objet restant en mémoire, dont la durée de vie n'excède pas celle du programme qui le crée.

 Objet à versions (Versionnable Object)  Objet dont l'historique des instances crées (successivement ou simultanément) est conservé dans la base sous la forme de versions consultables ou modifiables.

‹#›

J.PHILIPP d'après G. Gardarin

Fonctionnalités objets d'un SGBDO

     Fonctionnalités objets obligatoires les objets atomiques et complexes, l'identité d'objets, l'héritage simple, le polymorphisme (surcharge).

‹#›  Fonctionnalités objets optionnelles   l'héritage multiple, la gestion des messages d'exception.

J.PHILIPP d'après G. Gardarin

3. ARCHITECTURES D'UN SGBDO

 Architecture fonctionnelle type LOO Persist.

Outils Interactifs OQL ODL • Éditeur de classes • Manipulateur d'objets • Bibliothèques graphiques • Débogueur, éditeur OQL = Object Query Language ODL = Object Defintion Language LOO = Langage Orienté Objet ‹#› Gérant d'objets • Persistance • Identification • Fiabilité • Accès • Concurrence • Sécurité

J.PHILIPP d'après G. Gardarin

Architecture opérationnelle

   Problèmes  Fonctions du SGBDO distribuée en réseau,   choix du protocole de communication dans les architectures C&S, organisation en processus et tâches répartis.

Propriétés actuelles des architectures matérielles  Environnement de stations de travail en réseau de plus en plus fréquent.

 Puissance croissante du poste de travail.

 le débit réseau n'est plus un goulot d'étranglement (  100 Mbit/sec.).

Conséquence  La puissance de traitement des postes clients devenant très importante, une partie des fonctions peut y résider.

‹#›

J.PHILIPP d'après G. Gardarin

Serveur d'objets

Application

Cache objets

objets

Cache objets Verrous Recherche Fichiers et index Cache pages ‹#›

J.PHILIPP d'après G. Gardarin

Serveur de pages

Application

Objets actifs Recherche Fichiers et index Cache pages

pages

Verrous et journaux Cache pages ‹#›

J.PHILIPP d'après G. Gardarin

Serveur de méthodes

Application

Objets actifs Répartiteur de Messages Gestion d'objets Cache pages

Remote Object Call ORB

Application Objets actifs Répartiteur de Messages Gestion d'objets Cache pages ‹#›

J.PHILIPP d'après G. Gardarin

Comparaisons

Serveur d'objets Points forts • méthodes sur client ou serveur • concurrence niveau objet Points faibles • serveur centralisé • duplication de fonctions Serveur de pages • distribution de pages possible • serveur plus simple • hétérogénéité difficile Serveur de • méthodes sur client ou serveur • transfert de messages standards méthodes • système uniforme et extensible • méthodes sur le serveur impossible • concurrence au niveau objet difficile • performances pour petits objets • peu bases de données • Corba et service BD ?

‹#›

J.PHILIPP d'après G. Gardarin

4. Gestion de la persistance des objets

 Objectifs  faire persister les objets du LOO sans les démonter,    assurer le plus possible la transparence pour le programmeur, obtenir des performances proches de celles du travail en mémoire, récupérer les espaces mémoires alloués aux objets détruits.

 Moyens  gérants d'objets persistants assurant concurrence et fiabilité,  identifiant d'objets permettant de retrouver les objets en 1 ou 2 accès,  ramasse-miettes (garbage collector) exécuté périodiquement.

‹#›

J.PHILIPP d'après G. Gardarin

La Persistance par héritage

  Classe racine de persistance (Pobject)  Tout objet d'une classe dérivée hérite des propriétés de

persistance.

 Les opérateurs sont

surchargés.

New

,

Delete

et

Envoi

de messages  Une primitive

Lookup

est ajoutée pour les recherches.

Non orthogonale au type    Seuls les types héritant de PObject persistent.

Nécessité de dupliquer les classes

transiantes

.

persistantes

et Possibilité de marquer la

persistance

pour éviter la duplication (attribut booléen

Persistant

).

Pobject New Delete Lookup  PPerson Nom Prenom … ‹#›

J.PHILIPP d'après G. Gardarin

La Persistance par référence

 Définition par le programmeur de racines de persistance   Mot clé "persistant" ou "db" ajouté aux déclarations Exemples Catalogue toto  Employe* emp = new persistant Employe("Toto");  persistant int x; x  Un objet racine de persistance est catalogué   accessible par la méthode

Lookup

Tout objet référencé par un objet persistant est persistant.

voiture  les références sont rendues persistantes  lors de l'écriture d'un objet, les références sont remplacés par des

oid

moteur ‹#›

J.PHILIPP d'après G. Gardarin

Translation des pointeurs

 Les adresses mémoires doivent être translatées en adresses BD (

oid

) lors des écritures et vice versa.

‹#› Toto Véhicule* Toto Véhicule* VoitureToto Peugeot

Pointeur invalide

Mémoire Disque

J.PHILIPP d'après G. Gardarin

Approche double pointeur

  Tout pointeur sur un objet persistant est remplacé par un double pointeur.

Ad(MC)

En écriture  si Ad(BD) inconnue ALORS 

Ad(BD)

{Ad(BD) = AllouerBD(Objet) ;Ecrire (Ad(BD), Objet)};   En lecture   si Ad(MC) inconnue ALORS { Ad(MC) = AllouerMC(Ad(BD)); Lire(Ad(MC), Ad(BD)) } ; Inconvénients    objets persistants versus objets transients (doubles pointeurs), lecture des objets pointés, faiblesse des performances.

‹#›

J.PHILIPP d'après G. Gardarin

Approche mémoire virtuelle (1)

   Écriture des objets sans modification   Pointeurs disques = adresse mémoire virtuelle.

Sauvegarde des pages dans des partitions BD images de la mémoire.

Pré-allocation des objets en mémoire virtuelle  Lorsqu'un objet est retrouvé, des pages inaccessibles sont allouées pour tous les objets référencés.

 L'objet est chargé lors du premier accès par récupération de la violation mémoire virtuelle.

Cette technique a été brevetée par ODI.

‹#›

J.PHILIPP d'après G. Gardarin

Approche mémoire virtuelle (2)

0 Mémoire Virtuelle Client 1 Accès Page Manquante 2 Violation OBJECT-STORE Tout pointeur est une adresse mémoire virtuelle client/serveur 3 Accès Serveur 2**32 4 Retour Page Image Disque J.PHILIPP d'après G. Gardarin

‹#›

5. Langages de requêtes

Véhicule

- numéro - couleur - fabriquant

Groupe

- nom - ville - président

Numéro des véhicules de couleur rouge dont le fabriquant a son siège à Paris et un président de moins de 50 ans ?

Employé

- nss - nom - date naissance - age()

J.PHILIPP d'après G. Gardarin

‹#›

Langage navigationnel

 Parcours d'un objet à la fois via les pointeurs véhicule* v, groupe* g, personne* p; for each v in vehicule { if v->couleur == “Rouge” then { g = v->fabriquant; if g->ville == "Paris" then { p = g->president; if p->age() < 50 then cout << v.numéro; } ; } ; };

J.PHILIPP d'après G. Gardarin

‹#›

Les SQL Objets

  Extension ou variation de SQL (adapté aux objets)      Parcours de chemin : Voiture.fabriquant.président => Personne.

Exécution de méthodes : voiture.démarrer().

Prise en compte de l'héritage.

Présentation des résultats : ensemble ou classe.

Parcours des collections.

Problème de compatibilité avec la norme SQL   Travaux de l'ODMG (ODL et OQL 93/96).

Normalisation de SQL3 en 1999.

‹#›

J.PHILIPP d'après G. Gardarin

Principaux SQL objets

FSQL OSQL XSQL SQL3 ISQL O-SQL VSQL O2SQL ESQL OQL HP MCC UNISQL ISO C.A.

ORACLE VERSANT O2 INRIA-BULL ODMG IRIS OPEN-DB ORION UNISQL Norme ?

INGRES ORACLE VERSANT O2 DBS3 Norme objet ?

J.PHILIPP d'après G. Gardarin

‹#›

6. Optimisation de requêtes

 Objectif de l'optimisation  Elaboration d'un plan optimisé.

 Partage et réutilisation de plans.

 Importance de l'optimisation  Peut diviser les temps d'exécution de requêtes par des facteurs 1000 ou plus !

 Indispensable pour des objets complexes et volumineux.

 Principes de base   Extension des techniques relationnelles.

Utilisation d'une forme interne généralement basée sur une algèbre d'objets.

‹#›

J.PHILIPP d'après G. Gardarin

Architecture type d'un SGBD

ANALYSEUR

Forme interne de la question

CONTROLEUR METABASE OPTIMISEUR

Plan d'exécution

GENERATEUR

Code à exécuter

EXECUTEUR

Résultat de la question

SYNTAXE SEMANTIQUE SCHEMA VUES INTEGRITE AUTORISATIONS ORDONNANCEMENT ELABORATION D'UN PLAN

Le plan est exécuté directement (interprété) ou stocké et exécuté plus tard (compilé)

EXECUTION METHODES D'ACCES J.PHILIPP d'après G. Gardarin

‹#›

Problèmes de l'optimisation objet

 Support des méthodes  Evaluation du coût.

 Evaluation des résultats.

 Jointures par références  Possibilité de jointures n-aires.

 Traversée des chemins en profondeur, en largeur, …  Structures complexes   Parcours de collections.

Application de prédicats.

 Utilisation d'index et placement  Prise en compte du placement des objets.

 Utilisation d'index de chemin.

J.PHILIPP d'après G. Gardarin

‹#›

7. Conclusion

 Techniques bien maîtrisées  Architecture client-serveur.

    Persistance des objets.

Langages de requêtes.

Optimisation de requêtes.

Concurrence et fiabilité.

 Standard futur  Absence de standards reconnu.

  Effort de normalisation (ODMG, SQL3).

Intégration plus ou moins complètes du modèle relationnel.

‹#›

J.PHILIPP d'après G. Gardarin