TECHNIQUES DES SGBDO 1. Qu'est-ce qu'un SGBDO ? 2. Architectures des SGBDO 3. Persistance des objets
Chapitre 1. Introduction.Historique Modèle relationnel année 80 (2ème génération) objectifs : optimisation de l’accès aux données indépendance données/schémas langage déclaratif d’interrogation fondement théorique : algèbre relationnelle client/serveur Chapitre 1. Introduction.Historique
Limites du modèle relationnel Très bon support théorique Mais : Modèle plat 1FN Données type simple Attributs atomiques Difficile de naviguer dans la structure (jointure) nouvelles applis (CAO, bureautique...) structure de données complexe hiérarchie, graphe de dépendance nouveaux types : graphique, images, texte, sons nouvelles fonctionnalités : objets multimédias, versions Chapitre 1. Introduction.Historique
Limites pour le programmeur pb mélange procédural et déclaratif pb de conversions de types Extensions procédurale de SQL propriétaires Modèle de transaction simple Pas de transaction longue Pas de transaction emboîtée performances (curseurs) réutilisation, extension des programmes Chapitre 1. Introduction.Historique
Chapitre 1. Introduction.Historique Evolution du matériel avant : serveur central avec BD terminaux alphanumériques maintenant : stations de travail graphiques en réseau puissance de calcul répartie interfaces H/M conviviales et performantes Chapitre 1. Introduction.Historique
Besoins administrateur conception interactive modif des données modif des schémas trace des choix antérieurs plusieurs concepteurs Chapitre 1. Introduction.Historique
Conclusion - Besoins actuels en BD persistance, concurrence d’accès, tolérance panne IHM, données complexes liens complexes non-dirigés indépendance données/programmes support théorique solide réutilisation Chapitre 1. Introduction.Historique
Rappel modèle objet Objet Identifiant Classe Attributs Opérations Héritage Objets complexes (collections) Polymorphisme
1. Qu'est-ce-qu'un SGBDO ? The Object-Oriented Database System Manifesto Atkinson, Bancilhon, Dewitt, Ditrich, Maier, Zdonick ( DOOD'89) Fonctionnalités BD obligatoires : la persistance la concurrence la fiabilité (panne) la facilité d'interrogation (langage de requête) Fonctionnalités BD optionnelles : la distribution les modèles de transaction évolués (longues et emboîtées) les versions
Fonctionnalités objets Fonctionnalités objets obligatoires : les objets atomiques et complexes l'identité d'objets Encapsulation Types ou classes l'héritage simple le polymorphisme (surcharge) Langage de programmation objet Fonctionnalités objets optionnelles : l'héritage multiple les messages d'exception
Modèle objet « pur » Persistance : Produits : Niches technologiques : Orthogonale au type Langages : C++, Smalltal, Java /OQL Produits : Issus des LPO O2,ObjectStore, Ontos, Objectivity, Jasmine Niches technologiques : Réseau, CAO, SIG, Gestion de données techniques Pas de transactionnel lourd
Modèle objet-relationnel Modèle relationnel Codd, 1969 Extensions du modèle relationnel : Au niveau relation : Imbrication de relations UNISQL Au niveau du domaine Oracle 8, SQL 3, Microsoft
Propriétés RICE (Miranda) Réutilisation : Finalité du paradigme objet Héritage, généralisation, composition, polymorphisme Identité : Identifier un objet de manière unique Complexité : Définition d’objets complexes et/ou fortement structurés Encapsulation : Boîte noire avec des méthodes de manipulation
Objet « pur » vs. Objet-relationnel Héritage multiple Héritage ? I OID ROW ID C Collections (set, bag, list, array) Pointeurs (ref et inverse) ADT Collections Opérateurs VALUE, REF, DEREF E Méthodes visibilité Functions et Procedures associées à ADT
ARCHITECTURES SGBDO Architecture fonctionnelle type : • Editeur de classes • Manipulateur d’objets • Bibliothèques graphiques • Débogueur, éditeur Outils Interactifs LOO Persist. OQL ODL OQL = Object Query Language ODL = Object Defintion Language LOO = Langage Orienté Objet • Persistance • Concurrence • Identification • Fiabilité • Accès • Sécurité Gérant d'objets
3. PERSISTANCE DES OBJETS Objectifs faire persister les objets du LOO sans les démonter assurer le plus possible la transparence pour le programmeur garder des performances proches du travail en mémoire récupérer les emplacements des objets détruits Moyens gérant d'objets persistants assurant concurrence et fiabilité identifiant d'objets permettant de retrouver les objets en 1 ou 2 accès ramasse-miettes périodique
La Persistance par héritage Classe racine de persistance PObject tout objet d'une sous-classe hérite des propriétés de persistance New, Delete et Envoi de message sont surchargés une primitive Lookup est ajoutée pour les recherches Non orthogonale au type seuls les types héritants de PObject persistent nécessité de dupliquer les classes persistantes et transiantes possibilité de marquer la persistance pour éviter la duplication (attribut booléen Persistant) Pobject New Delete Lookup --> PPerson Nom Prenom …
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: Employe* emp = new persistant Employe("Toto"); persistant int x; un objet racine de persistance est catalogué accessible par lookup Tout objet référencé par un objet persistant est persistant les références sont rendues persistantes : lors de l'écriture d'un objet les références sont remplacés par des oid Catalogue toto x voiture moteur