Bases de données orientées-objets

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Spécialisation/généralisation Héritage Polymorphisme
Le mécanisme des exceptions
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
(Classes prédéfinies – API Java)
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Le Modèle Logique de Données
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
Programmation Orientée Objet (POO)
TP 3-4 BD21.
Bases de données orientées-objets
Bases de données orientées-objets
TECHNIQUES DES SGBDO 1. Qu'est-ce qu'un SGBDO ?
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Introduction à la POO: Les classes vs les objets
Algorithme et programmation
User management pour les entreprises et les organisations Auteur / section: Gestion des accès.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Développement d’applications web
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Administration de SharePoint
Serveurs Partagés Oracle
Ecole Supérieure Privée de ingénierie et de technologie année universitaire :2013/2014 Cross-Plateform Cours JavaScript.
Configuration de Windows Server 2008 Active Directory
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Classes abstraites et Interfaces
Static modeling, Thu G. Falquet, L. Nerima.
L’utilisation des bases de données
Gestion des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
Programmation concurrente
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Création de bases de données
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Standard Template Library
Java, les objets : tout de suite ! Rassembler, grouper les objets
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Patrons de conceptions de créations
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
‘‘Open Data base Connectivity‘‘
Introduction.
JavaScript Nécessaire Web.
Gérer la sécurité des mots de passe et les ressources
LES PILES ET FILES.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
La notion de type revisitée en POO
PHP 5° PARTIE : LES COOKIES
1 Formation à l’usage éco-performant de votre pc 1 ère Partie.
11/04/ L'héritage Cours 7 Cours 7.
TECHNIQUES DES SGBDO 1. Qu'est-ce qu'un SGBDO ?
Créer des packages.
1 BDs Orientées Objets Witold LITWIN. 2 Pourquoi ? F Les BDs relationnelles ne sont pas adaptées aux applications CAD/CAM, cartes géo... F le problème.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Transcription de la présentation:

Bases de données orientées-objets 2. Les bases de données objets Yves Pigneur Stéphane Rey Ecole des HEC Université de Lausanne CH-1015 Lausanne yves.pigneur@hec.unil.ch (+41 21) 692.3416 Identifiant Dépendance fonctionnelle Fromes normales Normalisation

Agenda Introduction: SGDBO: Persistance des objets: problématique. SGDBO: définition; objectifs; ... Persistance des objets: persistance manuelle; persistance par héritage; persistance par référence. Navigation dans une base objet. Attributs: HEC Lausanne - 1999

Problématique Le paradigme objet disparaît! L'objet devrait inclure des méthodes de lecture/écriture dans la base; L'objet ne pourrait pas être sauvegardé comme une instance; Les types complexes ne pourraient pas être gérés; La transformation d'un schéma objet en schéma relationnel et inversément pose certaines difficultés. Pourquoi n'enregistrons-nous pas les données dans un SGBD(R)? Méthode Données SGBD(R) Le paradigme objet disparaît! HEC Lausanne - 1999

Qu'est-ce qu'un SGBDO? Atkinson, Bancilhon, Dewitt, Ditrich, Maier, et Zdonick ont proposé une clarification de ce qu'est un SGBDO, dans "The Object-Oriented Database System Manifesto", 1989. [http://www.cs.cmu.edu/afs/cs.cmu.edu/user/clamen/OODBMS/] Un SGBDO doit offir les fonctions de base d'un SGBD, et supporter les fonctionnalités suivantes: support d'objets atomiques et complexes; identité d'objets; héritage simple; héritage multiple (optionnel); polymorphisme; messages d'exception. HEC Lausanne - 1999

Fonctions de base d'un SGBD (backup) Fonctions de base pour gérer une base de données: indépendance physique des données; permanence des données; intégrité des données; possibilité de requêtes; gestion des transactions; concurrence; sécurité; ... HEC Lausanne - 1999

Objectifs des SGBDO Supporter directement les objets, c'est-à-dire pouvoir enregistrer des instances dans la base; réduire, voire éliminer, les dysfonctionnements entre le langage de programmation et le langage de la base de données. (La plupart des SGBDO ont été intégrés à C++;) partager le code réutilisable des applications de la base de données (exemple des objets métiers). Méthode Données SGBDO HEC Lausanne - 1999

SGBDO: pour quelles applications? Les besoins des applications nécessitant un SGBDO sont les suivants: données imbriquées et fortement liées; données existant en de nombreuses versions; structure de données volumineuse et complexe. Quelques exemples d'applications: ateliers de génie logiciel (AGL); conception assistée par ordinateur (CAO); fabrication assistée par ordinateur (FAO); bureautique; applications scientifiques et médicales; ... HEC Lausanne - 1999

Héritage Versions SGBDO et AGL Supporter le cycle de conception d'une application, de la définition des besoins à l'application finale. Gérer la configuration: gestion des accès concurrents à un module, suivi des différentes versions de modules, et enregistrement des informations de dépendance (déterminer les modules à recompiler). Gérer le projet: spécification, dépendances, et planification des sous-projets. Héritage Versions HEC Lausanne - 1999

SGBDO et AGL: exemple SAP R/3 Business Objects Business Components Base de données objet ? Human Resources Financial Accounting SAP R/3 Manu- facturing HEC Lausanne - 1999

Héritage SGBDO et conception Les outils de conception s'appuient sur une base de données intégrée qui n'est pas accessible par l'utilisateur. Les outils de conception gèrent (exemple d'un circuit électrique): un langage de description du comportement; un schéma fonctionnel; un schéma logique; un schéma de circuits; les sous-niveaux spécialisés; les masques de circuits intégrés. ... Héritage HEC Lausanne - 1999

SGBDO et conception: exemple Des objets ? HEC Lausanne - 1999

Multimédia ... SGBDO et bureautique Acheminer, traiter, archiver, détruire des objets: messages (mail, fax, ...); documents; workflow; groupware; ... Multimédia ... HEC Lausanne - 1999

Persistance des objets La persistance est un mécanisme selon lequel des objets peuvent être conservés sur mémoire secondaire (support physique). La persistance peut être assurée par les moyens suivants: fichiers: un objet peut être mémorisé, donc retrouvé, dans un fichier (les classes "storable" d'Eiffel par exemple); images: tout l'environnement d'une session peut être conservé, donc restitué (la méthode "saveimage" de Smalltalk par exemple); bases de données: les objets peuvent être ceux d'une base de données objets. HEC Lausanne - 1999

SGBDO et persistance des objets Le problème des SGBDO est d'assurer la persistance des objets sur un support physique. La persistance pose quelques problèmes: gestion des objets en mémoire et dans la base; performance d'accès aux objets; concurrence d'accès aux objets. HEC Lausanne - 1999

Persistance manuelle (1) La persistance manuelle laisse la gestion de la persistance à la charge du programmeur, ceci à l'aide de fonctions de persistance. // Rendre persistant un objet Oid = Persist (<name>, <ref>); Oid l'identifiant permanent et immuable attribué à l'objet dans la base objet (Object Identity); name le nom donné à l'objet; ref la référence en mémoire de l'objet. HEC Lausanne - 1999

Persistance (backup) Mémoire (temporaire) Base (persistant) SGBDO Reference /ou/ pointeur Oid /ou/ identifiant Méthode Données HEC Lausanne - 1999

Persistance manuelle (2) //Retrouver l'Oid d'un objet persistant à partir de son nom Oid = Lookup (<name>) //Activer un objet persistant désigné par son Oid ref = Activate (<Oid>) //Désactiver un objet persistant actif Oid = DesActivate (<ref>) //Supprimer un objet persistant, par son nom, ou son identifiant Void Unpersist (<name>) Void UnPersist (<Oid>) HEC Lausanne - 1999

Persistance par héritage (1) La persistance par héritage permet de cacher au programmeur les mouvements d'objets entre la base de données et la mémoire. L'héritage assure la persistance automatique de tout objet qui hérite de la classe PObject. //Déclaration de la classe Personne Personne subclass PObject Un objet est persistant si et seulement s'il est de type sous-classe de PObject. On dit alors que la persistance n'est pas orthogonale au type. PObject New{Persist} Delete{Unpersist} ... Personne New Delete GetName ... HEC Lausanne - 1999

Persistance par héritage (2) Inconvénient de la persistance par héritage: il est impossible de définir une opération sur les objets qui soit indépendante de leur propriété de persistance; si nous voulons des Personne persistantes et des Personne non persistantes (temporaires), nous devons dupliquer les classes. PObject New{Persist} Delete{Unpersist} ... PersonP New Delete ... PersonNP New Delete ... HEC Lausanne - 1999

Persistance par référence (1) La propriété de persistance est associée directement à l'objet, et non à sa classe. Tout objet peut être une racine de persistance, et tout objet référencé par un objet persistant est persistant. Cela nécessite un nouveau mot clé Persistant dans le(s) langage(s) de programmation, et une précompilation qui génère les appels aux fonctions Persist, Unpersist, Activate, etc. //Création d'un objet persistant martin : Personne; martin = new persistant("Martin"); HEC Lausanne - 1999

Persistance par référence (2) Tout objet racine de persistance est répertorié dans un catalogue: Name Oid La persistance par référence présente l'avantage de l'orthogonalité de la persistance au type de données. Catalogue "John" "Jack" ... "Adresse" "Voiture" HEC Lausanne - 1999

Navigation dans une base objet Le problème de la navigation dans les bases objets consiste à mémoriser de manière persistante les chaînages d'objets sur support physique. L'objet en mémoire John pointe sur l'objet Voiture John. L'objet mémoire John est écrit dans la base. Utilisé par une autre application, il pointe à présent sur un objet qui n'est plus présent en mémoire. Objet "John" Objet "Voiture John" Mémoire Objet "John" Objet "Voiture John" Mémoire Objet "John" Base Pointeur invalide HEC Lausanne - 1999

Mutation de pointeurs (1) Transformation consistant à passer de pointeurs disques à des pointeurs mémoires lors de la première navigation en mémoire via un objet, et inversement lors de la dernière. Doubles pointeurs: les références mémoires sont remplacées par des couples <oid, ref>; les parties ref des couples sont mises à 0 (zéro); un objet est référencé à partir de son Oid; la référence est chargée avec l'adresse de l'objet en mémoire. HEC Lausanne - 1999

Mutation de pointeurs (2) Mémoire virtuelle (Single Level Store): les objets utilisent la même adresse en mémoire centrale et sur disque; la mémoire virtuelle contient une image exacte de la base de données (ou d'une partition de la base); une violation mémoire virtuelle en lecture est déclenchée lorsqu'un objet référencé n'est pas en mémoire; le SGBDO retrouve la page de l'objet sur disque, et rend ladite page accessible en mémoire vituelle. Mémoire virtuelle (client) Page manquante 1. Accès 4. Retour page 2. Violation 3. Accès Serveur HEC Lausanne - 1999

Attributs des objets Attributs simples ou littéraux (entiers, nombres à virgules flottantes, caractères, ...); Attributs de grande taille (binary large objets - BLOBs); attributs références; attributs collections; attributs dérivés. HEC Lausanne - 1999

Attributs références (relation de composition) Les attributs références (AR) sont utilisés pour représenter des relations entre objets; les AR prennent comme valeur des objets, c'est-à-dire des références à des entités; les AR sont l'équivalent des pointeurs dans les langages de programmation, ou des clés étrangères dans les systèmes relationnels, avec deux différences majeures: les attributs référencés sont incorruptibles; les attributs référencés ne sont pas associés à des valeurs visibles; si l'état d'un objet référencé est modifié, l'attribut référencé pointe toujours le même objet. HEC Lausanne - 1999

Attributs collections Container typé désigné par un nom, contenant des éléments multiples organisés selon une structure particulière. Document: { title: STRING; document: DATE; keyword: SET[STRING] chapter: LIST[Chapter] } Un ensemble (set) est une collection non ordonnée, sans double; un sac (bag) est une collection non ordonnée, qui accepte les doubles; une liste (list) est une collection ordonnée, qui accepte les doubles; un tableau (array) est une collection ordonnée et indexée. La première forme normale du relationnel interdit les attributs collections de valeurs (domaine atomique). Chapter: { title: STRING; number: INTEGER; } HEC Lausanne - 1999

Collections Contenu des collections: des valeurs {10, 20, 30, 40} des objets <O1, O2, O3, ..., On> Dans les systèmes objet, la notion de collection est souvent réalisée par des classes paramétrées, encore appelées classes génériques ou patterns de classes. Collection Insert Delete Count ... Set Include Choice Exist Union ... List First Next Last ... HEC Lausanne - 1999

Collections et itérateurs Une collection peut contenir plusieurs milliers d'éléments. Il est plus efficace de renvoyer au programme un itérateur, au lieu de la collection elle-même. Un itérateur est un objet à part entière, qui possède les méthodes suivantes: renvoyer l'élément; passer à l'élément suivant; passer à l'élément précédent; terminer l'itération lorsque tous les éléments ont été parcourus; repartir du premier élément; sauter à un élément particulier. Les itérateurs sont soit directement accessibles au sein du langage de programmation, dans quel cas l'itérateur n'est pas transaprent pour l'utilisateur, soit utilisés en interne au niveau des méthodes d'accès du SGBDO. HEC Lausanne - 1999

Collections avec les SGBD(R) Une collection de personnes avec un SGBDO Une collection de personnes avec un SGBDR aCollect Person ... #2 ID NOM 1000 Bolomet #1 1001 Gorsjean aPerson Person ... 1002 Norton aPerson Person ... 1003 McDonlard 1004 Blanc ... ... HEC Lausanne - 1999

Exemple d'une collection de personnes Voir exemple Java - code ci-dessous Collect addElement firstElement ... Person ... aCollect Person ... aPerson Person ... aPerson Person ... aPerson Person ... HEC Lausanne - 1999

Exemple de collection: class Document.java import Document; public class Person { private String name; private String level; private Document[] read; //Constructor public Person(String n, String l) this.name = n; this.level = l; } HEC Lausanne - 1999

Exemple de collection: class Collect.java public void addElement(Person element) collection.addElement(element); return (Person)(collection.firstElement()); return collection.elements(); //Constructor to create a vector collection = new Vector(); return collection.size(); public Enumeration elements() //Add an element to a vector public Person firstElement() private Vector collection; public int getSize() //Get first element import java.util.*; public Collect() //Enumeration class Collect //Get size } { HEC Lausanne - 1999

Exemple de collection: class TryCollection.java (1) public static void main(String[] args) Collect aCollect = new Collect(); while(thisLot.hasMoreElements()) System.out.println(thisLot.nextElement().toString()); aCollect.addElement(aPerson); aPerson=readPerson(); if(aPerson==null) break; Enumeration thisLot = aCollect.elements(); public class TryCollection Person aPerson; import java.util.*; //Main procedure //Read keyboard import java.io.*; import Document; for(;;) } ... { HEC Lausanne - 1999

Exemple de collection: class TryCollection.java (2) System.out.println("\nLevel: "); System.out.println("\nName: "); return new Person(name, level); System.out.println(e); static public Person readPerson() if(name.length()==0) return null; BufferedReader kb = new BufferedReader(new InputStreamReader(System.in)); String level=kb.readLine().trim(); String name=kb.readLine().trim(); catch(Exception e) //Read keyboard try } { ... HEC Lausanne - 1999

Attributs dérivés Les attributs dérivés permettent de définir de manière procédurale une valeur d'attribut, en spécifiant une procédure à exécuter dès que la valeur est consultée ou affectée. Document: { title: STRING; document: DATE; ... release: DATE PROC() = ToDay(); } Les SGBDR permettent également de définir de manière procédurale une valeur d'attribut: triggers; stored procedures (Oracle). HEC Lausanne - 1999

Et encore ... Algèbre pour objets complexes; groupage et dégroupage; algèbre d'Encore; algèbre sous forme de classes: opérations de recherche; opérations ensemblistes; opérations de mise à jour; opérations de groupe; HEC Lausanne - 1999

Conclusion Les bases de données objet soulèvent de nombreux problèmes difficiles. Les problèmes d'architecture: architecture client-serveur d'objets; architecture client-serveur de pages. Les problèmes de performance: utilisation de caches d'objets; utilisation de techniques de mémoire virtuelle; utilisation de méthodes de regroupements d'objets. Et encore: problèmes de concurrence; problèmes de transactions; ... HEC Lausanne - 1999