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