IS-Net 15 Bases de données relationnelles objets Informatique de gestion et systèmes d’information Modèles relationnel et objet [email protected] [email protected] / Novembre 2001 ISNet15_19.doc IS-Net 15 Bases de données relationnelles objets TABLE DES MATIERES 1 2 3 4 5 6 7 Objectif ................................................................................................................ 3 Le modèle relationnel .......................................................................................... 4 2.1 Données........................................................................................................... 4 2.2 Concepts de base ............................................................................................ 4 2.3 Implantation des concepts ............................................................................... 5 2.4 Conception d'applications ................................................................................ 6 2.5 Forces du modèle relationnel ........................................................................... 7 2.6 Faiblesses du modèle relationnel..................................................................... 8 Le modèle objet ................................................................................................... 9 3.1 Actions et données........................................................................................... 9 3.2 Concepts de base ............................................................................................ 9 3.3 Mise en œuvre ............................................................................................... 10 3.4 Persistance .................................................................................................... 10 3.5 Sérialisation ................................................................................................... 11 3.6 SGBD orienté-objet ........................................................................................ 11 3.7 SGBD relationnel ........................................................................................... 12 3.8 Forces du modèle objet.................................................................................. 12 3.9 Faiblesses du modèle objet ........................................................................... 13 Comparaison des deux paradigmes .................................................................. 14 4.1 Caractéristiques des deux modèles ............................................................... 14 4.1.1 Modèle relationnel................................................................................... 14 4.1.2 Modèle objet ........................................................................................... 14 4.2 Liens entre entités.......................................................................................... 15 4.2.1 Modèle relationnel................................................................................... 15 4.2.2 Modèle objet ........................................................................................... 15 4.3 Accès aux données........................................................................................ 15 4.3.1 Modèle relationnel................................................................................... 15 4.3.2 Modèle objet ........................................................................................... 16 Le modèle objet-relationnel ............................................................................... 17 5.1 Liens entre entités.......................................................................................... 17 5.2 Accès aux données........................................................................................ 17 5.3 En conclusion................................................................................................. 18 Observations finales .......................................................................................... 18 Bibliographie ...................................................................................................... 19 Page 2 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 1 Objectif L'objectif de ce document est de présenter les modèles relationnel et objet afin de mettre en évidence, pour chacun d'eux, leurs forces et leurs faiblesses. Pour ce faire, nous présenterons les principales caractéristiques et les concepts de base des deux modèles, nous étudierons ensuite les conditions de leur mise en œuvre et de leur implantation et nous examinerons enfin les problèmes spécifiques qui pourraient se poser. L'étude de ces deux modèles devrait servir de base à une réflexion sur la position du modèle relationnel-objet dans le contexte actuel de la conception d'applications, contexte principalement centré sur la technologie objet. Page 3 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 2 Le modèle relationnel 2.1 Données Les concepts mis en œuvre dans le modèle relationnel sont fondés sur une théorie mathématique directement issue de l'algèbre relationnelle, de la théorie des ensembles et de la logique formelle. Cette technologie a vu le jour dans les années 70 avec les travaux de E. Codd [COD 70]. La conception de logiciel mettant en œuvre le modèle relationnel repose sur le principe de la séparation de l'analyse des données et de l'analyse des traitements, comme par exemple, la méthodologie Merise [TAR 91]. Dans la phase d'analyse des données, on s'applique à modéliser les informations du système indépendamment des traitements que ces données vont éventuellement subir. Comme le centre de préoccupation est principalement les données, les systèmes de gestion de base de données (SGBD) se sont trouvés particulièrement bien adaptés à l'implantation de ce concept. 2.2 Concepts de base Bien que le modèle relationnel repose sur des principes simples, il permet néanmoins de modéliser des données complexes. Une relation est une structure de données tabulaire. Une relation est composée d'attributs ; chaque attribut prend sa valeur dans un domaine. Une relation est donc un sous-ensemble du produit cartésien des domaines des attributs. Des opérateurs algébriques permettent d'effectuer des opérations entre les relations ; les principales opérations envisageables sont : • les opérations ensemblistes : union, différence, produit cartésien ; • les opérations relationnelles : projection, restriction ; • les opérations dérivées : intersection, division. Les contraintes d'intégrité sont des assertions s'appliquant à une ou plusieurs relations et qui doivent toujours être vérifiées. Notons enfin qu'un processus de normalisation permet de construire des modèles de données sans redondance d'information. Page 4 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 2.3 Implantation des concepts Un SGBD implantant ces concepts est appelé un système de gestion de base de données relationnel (SGBDR). Physiquement, le concept de relation est implanté par une table dont les colonnes représentent les attributs et les lignes, les occurrences de la relation. Chaque ligne de la table est identifiée par une clé primaire, formée de la valeur d'une (ou de la concaténation des valeurs de plusieurs) colonne(s). Les liens entre tables de la base de données sont réalisés à l'aide de clés étrangères. Une clé étrangère est un attribut ou groupe d'attributs dont les valeurs se retrouvent comme valeurs de clé primaire d'une table. Les clés étrangères sont donc des pointeurs logiques ; le concept de pointeur physique n'existe pas. En raison de cette caractéristique, le modèle relationnel est souvent qualifié de modèle à valeurs. Cette implantation des liens entre les tables crée de fait des chemins d'accès bi-directionnels aux données ; ainsi, il sera en général possible de répondre à un ensemble de problèmes qui sont en partie inconnus au moment de la création de la base de données. Le SGBDR est muni d'un langage de programmation unique, non procédural et normalisé, le langage SQL, qui permet : • de déclarer et de créer toutes les entités de la base de données (tables, index, clés, contraintes, …) ; • de manipuler les données mémorisées dans les tables (insertion, modification et suppression de lignes) ; • d'interroger la base de données et d'en extraire des informations en fonction d'un certain nombre de critères exprimés à l'aide des opérateurs algébriques vus plus haut ; • de définir des transactions ; • de contrôler l'accès aux données (vues) et d'affecter des privilèges à des utilisateurs ; • de poser des verrous sur des lignes et/ou des tables afin de gérer l'accès concurrent aux même données par plusieurs utilisateurs. Les informations mémorisées sont typées : à chaque attribut est associé un type. Les types principaux offerts par les SGBDR du marché comprennent les valeurs numériques, alphanumériques, date et logique. Avec l'avènement du multimédia, les types CLOB (character large object) et BLOB (binary large object) ont été introduits ; ils permettent la mémorisation de textes non structurés, d'images animées ou non et de sons, sans toutefois être manipulables directement par le langage SQL. La nature même de l'implantation du modèle relationnel règle de fait le problème de la persistance des informations traitées. Page 5 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 2.4 Conception d'applications Dans le cadre du modèle relationnel, les applications sont en général conçues sur la base d'une architecture client-serveur [GAR 96] ; le rôle de serveur étant dévolu au SGBDR. La partie client d'une telle application est en général réalisée au moyen d'un langage de programmation traditionnel ; ces langages s'interfacent alors avec le langage SQL soit de manière native, soit via un pré processeur, soit au moyen de couches logicielles fournies par le constructeur du SGBDR, par l'éditeur du langage de programmation ou encore par des tiers. Du coté du serveur, les grands fournisseurs de SGBDR proposent en général un langage procédural universel complétant le SQL et permettant de programmer des fonctions et des procédures stockées, des paquetages et des déclencheurs. Ce langage s'interface également avec le langage de programmation d'application, en général de manière semblable à celle décrite ci-dessus pour le SQL. Un exemple d'un tel langage est le PL/SQL, proposé par le SGBDR Oracle [FEU 97]. Ce langage est en général employé pour coder des traitements spécifiques à la base de données et communs à l'ensemble des applications qui y accèdent ; parmi ces traitements, on peut citer la spécification de contraintes d'intégrité comportementale complexes. Les algorithmes exprimés à l'aide de ce langage sont exécutés dans l'espace mémoire du serveur de données (SGBDR). Lors de la conception de la base de données elle-même – opération centrale dans l'approche relationnelle –, on applique un processus de normalisation qui permet d'éliminer les redondances d'informations tout en préservant la cohérence des données mémorisées dans la base. Ce processus, s'il réduit les sources d'erreurs, a un prix : le nombre de tables est augmenté du fait de la décomposition résultant de la normalisation ; cette inflation augmente le nombre de jointures nécessaires à l'interrogation de la base de données. Page 6 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 2.5 Forces du modèle relationnel De ce qui précède, on peut dégager les principales forces du modèle relationnel. Ce sont : − les fondements mathématiques rigoureux sur lesquels le modèle repose ; ceux-ci permettent en particulier au moteur du SGBDR d'optimiser automatiquement les requêtes qui lui sont soumises en appliquant des théorèmes de l'algèbre relationnelle ; − l'indépendance des données et des programmes de traitement, permettant un partage aisé d'informations entre les applications ; − un langage de programmation non procédural puissant, concis et normalisé, le SQL, permettant de décrire, de mettre à jour et d'interroger les données mémorisées, d'effectuer des opérations algébriques complexes sur ces données, de spécifier des contraintes d'intégrité ainsi que de contrôler les accès aux données et de gérer des utilisateurs ; − un langage de programmation universel qui rend la base active ; − la spécification logique des liens entre tables qui affranchit le schéma de base de données de tout chemin d'accès prédéfini ; − le concept de transaction garantissant l'intégrité de la base de données à la suite de l'exécution d'une séquence d'instructions de mise à jour ; − le concept de verrou qui permet l'accès concurrent aux données. Il faut bien sûr encore citer, bien qu'il ne s'agisse pas de qualités intrinsèques du modèle relationnel, les éléments suivants : − la large diffusion auprès de la majorité des grands comptes de SGBDR qui sont maintenant arrivés à maturité : ces systèmes sont performants, fiables, permettent la gestion de grandes quantités de données (de l'ordre du péta-octet) et intègrent souvent des outils de développement tels que les générateurs d'état, de formulaires, etc. ; − le retour à la centralisation des données induit par la baisse continue des coûts des télécommunications, par l'émergence de réseaux rapides et par le développement des portails d'entreprise. Page 7 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 2.6 Faiblesses du modèle relationnel Les principales faiblesses du modèle relationnel mises en évidence sont : − l'indépendance des données et des programmes de traitement qui dissocie les données de leur comportement ; − le respect des formes normales qui a pour conséquence de multiplier le nombre de tables et donc le nombre d'opérations de jointures dont le coût en ressources mémoire et processeur est élevé ; − le nombre de types de base restreint et non extensible (il n'est pas possible de définir de nouveaux types de données par composition de types existants) ; − le contenu des types objets longs (CLOB et BLOB) n'est pas manipulable directement par le langage SQL et nécessite donc le recours à des couches logicielles non normalisées ; − l'interfaçage nécessaire entre des langages de programmation tiers et le SQL (ainsi que le langage de programmation de la base, s'il existe) pour réaliser des applications client-serveur ou multi-tiers (impedance mismatch) ; − la faible capacité de modélisation : il est difficile de représenter directement des structures de données complexes (hiérarchies, graphes, collections, …). Page 8 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 3 Le modèle objet 3.1 Actions et données La conception de logiciel mettant en œuvre le modèle objet repose sur une idée élémentaire : un système informatique réalise certaines actions sur certaines données ; pour obtenir des systèmes souples, réutilisables et évolutifs, il vaut mieux structurer le logiciel autour des données plutôt qu'autour des actions [MEY 90]. Cette idée se fonde sur l'observation du fait que tout système informatique réussi sera l'objet de nombreuses modifications tout au long de sa vie. Or, dans un système en évolution, les actions représentent la partie la plus volatile : un bon système devra un jour ou l'autre résoudre de nouvelles tâches et certaines de ses tâches initiales peuvent même changer radicalement. Les ensembles de données qu'un système traite sont moins changeantes, du moins si l'on se place à un niveau d'abstraction suffisant. Lorsqu'on conçoit un système selon cette technique, la principale question que l'on se pose n'est pas ce que fait le système, mais à quelles données il le fait ; autrement dit, on va centrer l'attention sur les données et sur leur comportement. 3.2 Concepts de base Nous avons vu ci-dessus qu'un système informatique construit en se basant sur le modèle objet était focalisé sur les données et sur le comportement qu'elles avaient ; examinons donc les concepts qui permettront de modéliser ces données. Un type de données abstrait est la description d'une entité constituée de structures de données (les attributs) et de primitives d'accès (les opérations ou les méthodes). Le masquage de l'information consiste à encapsuler un type de données abstrait de telle manière que ses utilisateurs n'aient accès qu'à une vue abstraite, une description officielle de celui-ci : son interface. L'héritage permet de définir un nouveau type de données abstrait en étendant un type de données abstrait de base. Le nouveau type ainsi créé comprend : • tous les attributs du type de base ; • toutes les méthodes du type de base ; • des attributs supplémentaires ; • des méthodes supplémentaires. Certaines méthodes du type de base peuvent de plus être redéfinies pour spécifier un nouveau comportement. Le type de données abstrait créé par héritage est également appelé type dérivé du type de données abstrait de base. Le type dérivé est compatible avec le type de données abstrait de base. La référence à une instance d'un type de données abstrait a donc deux types qui peuvent éventuellement être distincts : • son type statique qui est celui de sa déclaration dans le texte du programme ; • son type dynamique qui est celui du type effectivement référencé ; cela peut-être le même type que le type statique ou bien cela peut-être un type dérivé du type statique. Lorsqu'une méthode associée à un type de données abstrait est appelée, le choix de la méthode effectivement appelée est fait lors de l'exécution en fonction du type Page 9 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets dynamique de l'instance dont on invoque la méthode : ce mécanisme s'appelle la liaison dynamique. Une classe est un type de données abstrait mettant en œuvre le principe du masquage de l'information, extensible par héritage et dont les méthodes sont activées par liaison dynamique. Un objet est une instance d'une classe. Un langage de programmation est dit orienté objet lorsqu'il implante le concept de classe comme défini ci-dessus. 3.3 Mise en œuvre Il est intéressant de constater que cette approche réintroduit les actions des systèmes logiciels d'une façon symétrique de celle des données : une classe définit une catégorie de données par les services que cette catégorie est capable de fournir. Notons également qu'une classe est une unité intéressante et utile en elle-même, indépendamment du système auquel elle appartient. Remarquons enfin qu'il peut y avoir des classes sans données (offrant uniquement des services) et des classes sans méthodes (modélisant des données inertes). Lorsqu'on conçoit un logiciel en mettant en œuvre le modèle objet, on commence par identifier les classes du domaine d'étude, puis on les assemble pour former le système informatique désiré. Un certain nombre de ces classes peut être puisé dans une bibliothèque générale, en particulier les objets de l'application et les objets d'implémentation [RUM 91]. D'autres classes, identifiées lors de l'analyse de l'activité de l'entreprise, les objets métiers [RUM 91] proviennent d'une bibliothèque spécialisée regroupant les classes communes aux applications métier de l'entreprise. Les classes spécifiques de l'application enfin, font l'objet d'un développement ad hoc. Notons toutefois que le rôle du concepteur ne se borne pas à assembler des classes comme les briques d'un mur ; la plupart du temps, le concepteur sera amené à développer un ensemble de classes techniques jouant le rôle de colle, de mortier entre les classes à disposition et celles qu'il a développées, de manière à obtenir une application fonctionnelle. Remarquons enfin qu'à l'issue du processus d'analyse, les données du domaine sont modélisées par des classes reliées entre-elles par des associations et qu'au cours de l'exécution de l'application issue de la conception, les informations effectivement traitées sont représentées par des objets reliées entre-eux par des références, formant ainsi un graphe en général complexe. La description succincte de la démarche de conception par composition de classes que nous avons décrite ci-dessus met clairement en évidence que nous nous trouvons en présence d'une approche ascendante. Il s'agit donc d'une démarche se situant à l'opposé de celle appliquée en général par le concepteur traditionnel, à savoir la conception fonctionnelle descendante, introduite par N. Wirth [WIR 71], recommandée par de nombreux ouvrages et mise en œuvre dans des méthodologies de conception telles que Merise [TAR 91]. 3.4 Persistance Il peut être souhaitable que certains objets créés par une application survivent à l'exécution de cette application, c'est-à-dire soient persistants. Cette caractéristique est particulièrement requise dans les situations suivantes : • les informations mémorisées par les objets sont partagées entre plusieurs applications ; Page 10 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets • la même application peut s'exécuter ultérieurement en prenant comme état initial un état mémorisé par les objets persistants ; • les résultats de traitements effectués par l'application doivent être mémorisés en vue de leur archivage. Un dispositif de mémorisation permanent est alors nécessaire ; ce dispositif peut être un fichier séquentiel ou un système de gestion de bases de données (SGBD). 3.5 Sérialisation La plupart des langages de programmation orientés objets implantent un mécanisme de persistance nommé sérialisation qui permet d'enregistrer un graphe quelconque d'objets dans un fichier séquentiel de bytes. À la suite de la sérialisation d'un tel graphe, la même application (ou une application différente) peut recharger en mémoire le graphe précédemment sérialisé. Ce mécanisme est en général particulièrement simple d'emploi. Dans le langage Java par exemple (à partir de la version 1.1), il suffit d'invoquer une méthode d'écriture de l'objet constituant la racine du graphe pour que tous les objets du graphe soient récursivement et automatiquement sérialisés [FLA 97]. Une méthode correspondante de lecture permet d'effectuer le processus inverse. L'intégrité et la cohérence des données sont assurées par l'enregistrement d'informations supplémentaires caractérisant la classe et sa version, informations vérifiées automatiquement lors d'un rechargement ultérieur. Les principales qualités d'un tel système sont : • la simplicité d'emploi du mécanisme ; • la possibilité de faire circuler des objets entre applications distribuées sans encodage ni décodage spécifiques à programmer. Les principaux défauts de la sérialisation sont : • l'ensemble d'un graphe d'objets est mémorisé/rechargé en une seule opération alors que peut-être seulement une partie de ce graphe était utile pour le traitement en cours ; • l'absence totale d'un concept de transaction sans lequel il est impensable d'envisager le partage de données entre plusieurs applications différentes. 3.6 SGBD orienté-objet Les bases de données orientées objet existent depuis le milieu des années 1980. Leur objectif principal est d'unifier deux technologies : les systèmes de gestion de bases de données et la programmation orientée objet. Un langage de programmation orienté objet est en général très expressif mais manque d'outils performants de gestion de la persistance ; un SGBD, pour sa part, a comme principale caractéristique de gérer la persistance des données en manquant d'expressivité dans la formulation des traitements appliqués aux données. Un SGBD orienté objet (SGBDOO) implante toutes les caractéristiques des langages de programmation orientés objets et est capable de fournir des services de persistance performants pour des applications traitant de grandes quantités de données. Dans un tel SGBD, les liens entre les objets sont bien sûr implantés sous forme de références à d'autres objets (en d'autres termes, sous la forme de pointeurs physiques) et l'accès aux informations est principalement de type navigationnel. Un accès sous forme de requêtes permettant d'extraire un ensemble d'objets satisfaisant un certain nombre de caractéristiques est en général également possible ; certains standards, tel ODMG 2.0 [CAT 97], ont d'ailleurs été proposés pour résoudre ce Page 11 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets problème. Notons enfin que le concept de transaction est en général également à disposition du concepteur d'applications. Un SGBDOO est donc naturellement adapté à l'implantation de la gestion de la persistance des objets d'une application. Il existe même des SGBDOO où cette persistance est gérée de façon complètement transparente pour le concepteur d'applications : un sous-ensemble des objets de l'application est déclaré persistent et des librairies additionnelles fournies par le constructeur du SGBDOO se chargent de l'interfaçage. C'est le cas par exemple du SGBDOO Jasmine, distribué par Computer Associates, qui fournit des outil gérant de façon transparente la persistance des objets d'applications écrites dans les langages de programmation C++ et Java [KET 98], supprimant ainsi l'impedance mismatch. 3.7 SGBD relationnel On peut également employer un SGBDR pour implanter la persistance des objets d'une application développée selon le modèle objet. Le problème principal auquel on devra faire face est que les modèles relationnel et objet ne sont pas vraiment compatibles : le modèle relationnel est centré sur les données alors que le modèle objet est centré sur le comportement. Il s'agit donc réellement de deux appréhensions différentes du monde réel. Néanmoins, souvent pour des raisons stratégiques (l'entreprise concernée possède de nombreuses applications développées selon le modèle relationnel, les données doivent être partagées avec d'autres applications de l'entreprise, …), le concepteur d'une application objet sera amené à implanter la persistance de ses objets au moyen d'un SGBDR. Le principal défi auquel le concepteur est confronté est d'encapsuler suffisamment la base de données relationnelle pour qu'une petite modification dans le modèle relationnel des données n'invalide pas le modèle objet des données et vice-versa. Lorsqu'on considère le modèle objet obtenu à l'issue de l'analyse, on peut en général assez facilement établir une correspondance directe entre classes et tables et implanter un accès direct aux tables depuis le programme d'application ; cette solution ne peut être que ad hoc et nécessitera des modifications de grandes parties du code à chaque modification du modèle objet. La solution consiste bien sûr en la conception d'une couche logicielle spécialisée, réalisant l'encapsulation décrite plus haut. Cette couche logicielle sera chargée de la gestion de la correspondance entre les objets de l'application et les éléments relationnels de la base de données. Un des principaux problèmes que l'on va rencontrer est un problème de performance ; en effet, dans le modèle objet, l'accès aux informations est essentiellement navigationnel et la navigation, dans le modèle relationnel, devra être implantée en utilisant l'opération de jointure, opération coûteuse en ressources. 3.8 Forces du modèle objet Les principales forces du modèle objet qui se dégagent de ce qui précède sont : − l'unité entre les données et les programmes de traitement : un objet est l'association de structures de données et d'opérations spécifiant les capacités de l'objet ; − le principe de la liaison dynamique, qui permet de spécifier des algorithmes de traitement qui pourront être appliqués à une famille de classes, certaines d'entre-elles encore inconnues au moment de la conception de l'algorithme ; − un langage de programmation et un modèle de données uniques, lorsque la persistance peut être implantée de façon transparente à l'aide d'un SGBDOO ; Page 12 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets − la réduction des différences entre le monde à modéliser et le modèle de données ; − la richesse des types de données à disposition ainsi que la possibilité, via les concepts de type de données abstrait et de classe, d'en créer de nouveaux ; − la grande capacité de modélisation, en particulier celle de structures de données complexes telles que les hiérarchies, les graphes, les collections, … ; − la possibilité de concevoir des composants logiciels réutilisables, permettant ainsi de construire des applications par composition. 3.9 Faiblesses du modèle objet Les faiblesses du modèle objet qu'on peut relever sont principalement : − le manque de bases théoriques dans la systématisation de la conception d'un modèle objet ; − le problème de la gestion de la persistance dans un environnement sans SGBDOO, seul système de gestion de données vraiment adapté ; on retrouve alors le problème de l'impedance mismatch. − la navigation entre objets du modèle est définie une fois pour toutes ; si de nouveaux problèmes posés sur les mêmes données doivent être résolus postérieurement à la conception du modèle, celui-ci devra vraisemblablement être modifié ; − la tenue de charge des moteurs de SGBDOO, lorsque le nombre d'utilisateurs concurrents augmente d'une manière importante ; Page 13 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 4 Comparaison des deux paradigmes Les modèles relationnel et objet fournissent à l'analyste un cadre conceptuel et un ensemble d'outils lui permettant de modéliser des informations du monde réel. Cet état de fait étant établi, il convient de garder présent à l'esprit que ces deux modèles se fondent sur des paradigmes complètement différents. Cette différence fondamentale de référentiel interdit donc d'appliquer des raisonnements identiques aux deux modèles. Des concepts qui seront pertinents dans un cadre ne le seront pas dans l'autre et vice-versa. Dans le cadre de ce document, nous rappellerons succintement les principales caractéristiques des deux modèles, puis nous examinerons comment les liens entre entités sont représentés et les conséquences que ces représentations ont sur l'accès aux données. Enfin, nous étudierons comment le modèle objet-relationnel se positionne dans ce contexte. 4.1 Caractéristiques des deux modèles 4.1.1 Modèle relationnel Le modèle relationnel est fondé sur l'algèbre relationnelle, la théorie des ensembles et la logique formelle. Lors de la conception du modèle de données issu de l'analyse, on applique un processus de normalisation qui élimine les redondances d'information tout en préservant la cohérence des faits mémorisés. Le modèle de données qui est obtenu à l'issue de ce processus de normalisation est dit être en troisième forme normale (3NF). 4.1.2 Modèle objet Le modèle objet a comme objectif de permettre la modélisation des entités du monde réel de telle sorte que la différence entre le monde réel et le modèle obtenu soit la plus ténue possible. Dans ce cadre, il est aisé de modéliser des structures complexes telles que les hiérarchies, les graphes et les collections. Lors de la conception d'un modèle de données, l'expérience de l'anayste joue un très grand rôle, principalement en raison de l'absence de bases théoriques dans la systématisation de la conception objet. Page 14 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 4.2 Liens entre entités 4.2.1 Modèle relationnel Dans un modèle de données relationnel normalisé, les liens entre entités sont représentés par des clés étrangères (association binaire de type 1-n) ou par des tables de correspondance de clés étrangères (association binaire de type n-n). Cette représentation contient toute l'information nécessaire pour calculer n'importe quel chemin d'accès aux données parcourant ces liens. 4.2.2 Modèle objet Dans un modèle de données objet, les liens entre entités sont représentés par des pointeurs. Pour implanter une association binaire de type 1-n, il est nécessaire de prévoir un pointeur du côté "1" et une table de pointeurs du côté "n" ; de même, pour implanter une association binaire de type n-n, il est nécessaire de prévoir une table de pointeurs des deux côtés. Cette représentation contient évidemment toute l'information nécessaire pour parcourir n'importe quel chemin d'accès aux données. 4.3 Accès aux données 4.3.1 Modèle relationnel Dans le modèle relationnel, les chemins d'accès sont exprimés en compréhension. Pour parcourir un chemin d'accès aux données, il est nécessaire d'effectuer un calcul à l'aide des opérations algébriques : • dans le cas d'une association binaire de type 1-n, il faut effectuer un produit cartésien suivi d'une restriction (jointure) ; • dans le cas d'une association binaire de type n-n, il est nécessaire d'effectuer deux produits cartésiens puis une restriction sur le résultat de ces produits cartésiens (jointures). La longueur de ces calculs fastidieux fut l'une des causes de la piètre performance des premiers SGBD relationnels. Dans les SGBDR de dernière génération, l'administrateur de la base dispose d'une impressionnante panoplie d'outils lui permettant : • d'analyser les types d'interrogations effectuées sur la base de données ainsi que de mesurer le coût en ressources de ces interrogations ; • en fonction de cette analyse, d'optimiser les accès aux diverses tables constituant la base en créant des structures de données auxiliaires telles que des partitions - hachées ou non, des index, des bitmap indexes, des index organized tables, etc. ; • de spécifier que certaines tables doivent être mises en mémoire cache ou encore accédées parallèlement lors de certaines requêtes. De plus, le moteur du SGBDR lui-même optimise automatiquement les requêtes en appliquant des théorèmes de l'algèbre relationnelle et en exploitant la structure de données auxiliaire (créée par l'administrateur) la plus adaptée à la nature de la requête. Toutes ces opérations d'optimisation visent à gommer les conséquences du processus de normalisation dont l'objectif principal est d'éliminer les redondances Page 15 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets d'informations et donc de simplifier la mise à jour de la base de données en préservant son intégrité. 4.3.2 Modèle objet Dans le modèle objet, les chemins d'accès sont exprimés en extension. Pour parcourir un chemin d'accès aux données, il suffit de suivre les pointeurs mémorisant explicitement tous les chemins d'accès possibles. Aucun calcul autre que l'indirection n'est nécessaire ; le coût de celle-ci est quasiment nul. Ce type d'accès aux données a comme principaux avantages sa simplicité d'emploi lors du parcours des liens entre entités et sa performance ; c'est d'ailleurs le type d'accès qui était employé dans les bases de données réseau. En raison de cette simplicité, l'administrateur de la base dispose de très peu d'outils auxiliaires et la responsabilité de l'optimisation des chemins d'accès est en général reportée sur le concepteur de la base de données. Le principal défaut de ce modèle est que les mises à jour de la base de données peuvent devenir très complexes, et donc sources d'erreurs de programmation. En effet, les associations binaires de type 1-n et n-n étant implantées au moyen de pointeurs des deux cotés de l'association, il est nécessaire de mettre ces pointeurs à jour lors de chaque modification de l'une des tables prenant part à l'association. Ces mises à jour peuvent de plus être rendues encore plus complexes lorsque le concepteur de la base de données a optimisé certains chemins d'accès aux informations en rajoutant des pointeurs supplémentaires à certaines tables. Toutes ces raisons font que le concepteur d'une base de données dans le contexte objet doit définir les chemins d'accès effectivement employés et la navigation souhaitée très tôt au cours du processus d'analyse, de manière à pouvoir supprimer les pointeurs implantant des chemins non pertinents pour l'application en cours de développement. Ces suppressions permettront de simplifier les mises à jour puisque celles-ci devront actualiser moins de pointeurs, mais elles empêcheront également d'éventuels développements ultérieurs empruntant d'autres chemins d'accès que ceux initialement prévus. Notons enfin que les requêtes des langages d'interrogation ([SQL3], [CAT 97]) retournent des collections d'objets et que la simplicité de traitement de ces collections repose complètement sur les qualités du langage de programmation objet associé au SGBDOO. Page 16 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 5 Le modèle objet-relationnel Le modèle objet-relationnel est une tentative de réunion des concepts présents dans les modèles relationnel et objet. Cette réunion est réalisée en étendant le modèle relationnel pour lui conférer un certain nombre de qualités reconnues du modèle objet. La totalité des fonctions d'un SGBDR classique est préservée et les concepts qui font le succès de l'approche objet ainsi que de nouveaux types de données y sont intégrés. Cette fusion ressemble parfois au mariage de la carpe et du lapin… En effet, des concepts qui sont pertinents dans le contexte relationnel - comme ceux des formes normales (1NF, 2NF et 3NF) - ne le sont plus dans le contexte objet, d'où la définition de la NF2 (Non First Normal Form). Inversément, les concepts de structures de données complexes et d'identité d'objet (OID) qui sont fondamentaux dans le modèle objet sont en contradiction avec les principes de base du modèle relationnel. 5.1 Liens entre entités Les liens entre entités peuvent être représentés comme dans le modèle relationnel, mais ils peuvent également être représentés comme dans le modèle objet. Toutes les solutions mixtes envisageables sont également possibles, les représentations relationnelles et objet n'étant finalement que celles qu'on trouve aux deux extrémités de la panoplie disponible. Une association binaire de type 1-n peut ainsi être représentée de 12 façons différentes et celle de type n-n peut quant à elle donner lieu à 16 représentations différentes, chaque représentation possédant ses avantages et ses inconvénients [SOU 99]. 5.2 Accès aux données L'accès aux données est bien sûr lié à la représentation des liens entre entités. Suivant les choix de représentation qui ont été faits, ce sont les caractéristiques du modèle correspondant – relationnel lorsqu'on emploie des clés étrangères, objet lorsqu'on emploie des pointeurs – qui s'appliquent. Le rôle du concepteur de la base de données est ici essentiel. Il doit non seulement être extrêmement compétent dans son domaine de base, mais il doit également posséder de solides connaissances dans le domaine de l'administration de la base de données de manière à choisir l'implantation la plus efficace possible en fonction des caractéristiques de l'application qu'il développe. Page 17 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 5.3 En conclusion La motivation principale des éditeurs de SGBDR est manifestement de préserver l'ensemble des acquis du modèle relationnel de manière à ne pas se couper de l'énorme segment de marché qu'ils occupent avec cette technologie. En introduisant les concepts objet dans leur logiciel, ils prennent également le virage de la modernité en proposant des standards en vogue dans la conception d'applications distribuées et accessibles par le Web. Le pont entre les technologies relationnelles et objet est également assuré grâce au concept de vue objet-relationnelle. Cette intégration se fait quand même au prix d'une complexification importante du langage SQL qui perd ici, à notre avis, la simplicité qui en faisait sa force. Le travail du concepteur de la base de données est également rendu beaucoup plus difficile dans la mesure où le cadre conceptuel rigide que lui imposait le modèle relationnel est ici très relaché, voire inexistant. Remarquons enfin que nous trouvons ici en présence d'un système hybride comparable à ceux qui sont apparus au début de la vague relationnelle, lorsque les éditeurs ont rajouté une couche relationnelle sur des SGBD réseaux. 6 Observations finales L'emploi de la technologie objet pour la conception d'applications tient actuellement le haut du pavé. Cela est dû principalement à l'expressivité des langages de programmation orientés objets ainsi qu'à la puissance de modélisation du réel que possède le modèle objet. Il est donc fondamental que les éditeurs de logiciels proposent de nouveaux outils qui permettent de gérer l'ensemble du cycle de vie de données persistantes pour la plupart. D'un autre point de vue, il est essentiel de tenir compte du fait que des centaines de milliers d'applications en production de nos jours ont été conçues dans le cadre du modèle relationnel et s'appuient sur des informations mémorisées dans des SGBDR. Il faut également observer que les SGBDR actuellement sur le marché sont des produits de haute technologie, performants et fiables et qu'ils occupent presque en totalité le terrain de la gestion des données persistantes. La situation actuelle des SGBDOO est semblable à celle qu'avaient connu les SGBDR au moment de leur avènement, alors que la totalité du marché était occupée par des bases de données hiérarchiques et réseaux. On peut donc espérer qu'en arrivant à maturation, les SGBDOO vont se développer, simplifiant ainsi grandement le problème de la gestion des données persistantes des applications conçues selon le modèle objet. Des ponts avec les SGBDR devraient également voir le jour. L'implantation de la gestion de la persistance des objets au moyen de SGBD relationnels-objets est également un problème qui mérite une étude approfondie. Ce qu'on peut en tout cas affirmer sans grande chance de se tromper est que l'introduction des types abstraits de données, de l'héritage et de la navigabilité (pointeurs) dans le modèle relationnel permettront sûrement de résoudre ce problème de manière beaucoup plus élégante qu'avec un SGBDR traditionnel. Le développement des SGBD relationnels-objet permet également aux entreprises de préserver leur investissement puisqu'elles peuvent continuer à employer leurs applications purement relationnelles et développer de nouvelles applications mettant en oeuvre le modèle objet, tout en partageant les données entre les applications des divers types. On offre ainsi aux entreprises une possibilité de migration en douceur vers l'objet tout en préservant l'existant. Page 18 sur 19 26/11/01 IS-Net 15 Bases de données relationnelles objets 7 Bibliographie [CAT 97] Rick CATTEL, The Object Database Standard : ODMG 2.0, Morgan and Kaufmann Publishers, 1997 [COD 70] Edward CODD, A Relational Model of Data for Large Shared Data Banks, Communications of the ACM, vol. 13, n°6, pp 377-387, 1970 [FEU 97] Steven FEUERSTEIN, Oracle PL/SQL, Guide de programmation, O'Reilly, 1997 [FLA 97] David FLANAGAN, Java in a Nutshell, 2nd edition, O'Reilly, 1997 [GAR 96] Georges GARDARIN, Olivier GARDARIN, Le Client-Serveur, Eyrolles, 1996 [KET 98] Mohammad KETABCHI, Jasmine, The Perfect Platform to Build Java Applications, http://www.cai.com/analyst/jasmine_perfect_platform.pdf, 1998 [MEY 90] Bertrand MEYER, Conception et programmation par objets – Pour du logiciel de qualité, InterÉditions, 1990 [RUM 91] James RUMBAUGH, Michael BLAHA, William PREMERLANI, Frederick EDDY, William LORENSEN, Object-Oriented Modeling and Design, Prentice-Hall, 1991 [TAR 91] Hubert TARDIEU, Arnold ROCHFELD, René COLLETTI, La méthode Merise, Tome 1, Eyrolles, 1991 [WIR 71] Nicklaus WIRTH, Program Development by Stepwise Refinement, Communications of the ACM, vol. 14, n°4, pp 221-227, 1971 [SOU 99] Christian SOUTOU, Objet-relationnel sous Oracle 8. Modélisation avec UML, Eyrolles, 1999 [SQL3] http://www.objs.com/x3h7/sql3.htm Page 19 sur 19 26/11/01