Introduction SGDBOO Sommaire Définition d’un SGBD (6 services) Apport et limitation du modèle relationnel Système relationnel étendu Définition d’un SGBDOO
SGBD 6 services : La persistance La gestion du disque Partage des données Fiabilité des données Sécurité des données Interrogation de la base (langage de requêtes) La persistance: Il existe de façon permanente un ensemble de données (la base) . Ces données sont gérées par le SGBD. Ces données ont une durée de vie supérieur au programme qui les a crées. Gestion du disque : Les SGBD doivent gérer des ensembles volumineux de données de manières efficace. Il faut donc qu'ils mettent en place des stratégies de stockage (placement physique des données sur le disque) et d'accès à l'information (gestion d'index). Partage des données : Plusieurs utilisateurs doivent pouvoir accéder aux mêmes données en même temps. Il faut que le SGBD gère les accès concurrents : ce service est offert par le gestionnaire de transactions. Fiabilité des données : Les données doivent rester cohérentes. Cette cohérence peut être perturbée par une mauvaise gestion de la base, ou des pannes logicielles et matérielles. Il faut que le système soit capable de restaurer les bases pour les placer dans un état cohérent : ce service est offert par le gestionnaire de reprises. Sécurité des données : Il faut gérer les droits des différents utilisateurs. Ce service est offert par le gestionnaire d'autorisations. Interrogation de la base (langage de requêtes) : Les utilisateurs doivent pouvoir interroger la base de manière interactive. Le contenu de la base peut être réparti sur différents fichiers. Cette répartition doit être transparente pour l'utilisateur : - indépendance physique, l'utilisateur n'a pas à savoir où sont stockées ses données - indépendance logique , l'utilisateur n'a pas à savoir comment ses données sont structurées. Le langage de requêtes permet d'interroger la base.
Les différents modèles Les SBGD sont caractérisés par un modèle de données : modèle hiérarchique modèle réseaux modèle relationnel modèle orienté objet
Apports du modèle relationnel Concepts simples La notion de relation est facile à comprendre. Indépendance physique et logique des données Lorsque l'on définit le schéma d'une application, on ne se préoccupe pas de la manière physique dont sont stockées les données.
Limitations du modèle relationnel Le modèle relationnel est bien adapté pour traiter des données de type simple Les jointures sont coûteuses en ressources Solution : Soit on enrichie SQL => voir PL/SQL. Soit on lie un langage impératif à SQL Le modèle relationnel est bien adapté pour traiter des données de type simple (entier, réel, ... données dont le format est connu). Par contre, ils ne sont pas fait pour gérer des données complexes du type son ou image par exemple. Les jointures sont coûteuses en ressources (CPU, mémoires, accès disque) et ne peuvent pas être effectuées en nombre important. Par exemple : R (NOM, PERE, MERE) Est ce que Dupont a un ancêtre Durand ? Ce type de requête est irréaliste sur une table importante. De plus, un e tel requête est impossible à exprimer en SQL.
Modèle relationnel étendu Apports Interrogation de la notion d'identité d'objet Triggers Enrichir le langage de requêtes Limitations / SGBDOO sur la notion d'héritage au niveau de l'encapsulation des données par manque d'homogénéité du aux rafistolages successifs du systèmes. Les systèmes relationnels étendus ont pour but d'élargir le modèle relationnel pour répondre entre autre aux problèmes suivants : - Interrogation de la notion d'identité d'objet Chaque objet à une identité propre : un ensemble d'objets peuvent avoir les mêmes attributs tout en étant différents (par exemple des ordinateurs, des jumeaux, …). Pour cela, à chaque objet est associée une valeur unique dans le système et qui le différencie de tous les autres. Dans un SGBDR, les clefs permettent de simuler cette notion : la différence est qu la gestion est laissée au programmeur. - Triggers Les triggers permettent de vérifier des contraintes d'intégrité. - Enrichir le langage de requêtes Le langage de requêtes est enrichie d'instructions de contrôle, de masques de saisie, de formules de dialogues, … Les SGBR étendus tendent à intégrer le modèle objet mais rencontrent encore des problèmes : - sur la notion d'héritage - au niveau de l'encapsulation des données - par manque d'homogénéité du aux rafistolages successifs du systèmes.
Définition d’un SGBDOO Les 6 services d'un SGBD Une gestion complète des objets Notion de clone, type et méthodes Identité d'objet Héritage Surcharge et liaisons dynamiques Encapsulation Un langage de programmation complet - Les 6 services d'un SGBD - Une gestion complète des objets - Notion de clone, type et méthodes - Identité d'objet - Héritage - Surcharge et liaisons dynamiques Exemple : Soit C1 une classe avec une méthode p(x) et C2 une autre classe qui hérite de C1 et redéfinit p(x). Soit iC2 une instance de C2. Lors de l'exécution, on peut appeler p(x) sur iC2 : iC2.p(x). On ne peut connaître la classe effective de l'objet qu'à l'exécution : d'où le terme liaison dynamique. - Encapsulation - Un langage de programmation complet : - complétude de calcul : on peut exprimer les mêmes choses que dans un langage impératif. - Complétude des ressources : un environnement unique pour le traitement des données, les interfaces, les valeurs …
La norme Le standard définit par l’ODMG est constitué de deux parties : Les fondations une description de l'architecture un modèle objet un langage de définition d'objet (C++ enrichi) ODL un langage de requêtes OQL qui permet d'interroger la base en mode intéractif. Les liaisons La norme est définie par l'ODMG (Object Database Management Group). La norme actuelle est l'ODMG 93. Ce standard a été enrichi en 1997. Le standard est composé de deux parties : - les fondations : Les fondations sont communes à tous les SGBDOO. Elles définissent : - une description de l'architecture - un modèle objet - un langage de définition d'objet (C++ enrichi) ODL - un langage de requêtes OQL qui permet d'interroger la base en mode intéractif. - les liaisons : Si l'on veut utiliser un langage de programmation OO (C++, Java, …) pour programmer une application, on va effectuer une liaison entre ce langage et le SGBDOO. On enrichit le langage de programmation de sorte à lui donner des fonctionnalités pour gérer la base.
Architecture ODMG