bases de données orientées-objets 2. les bases de données objets

38
Bases de données orientées-objets Bases de données orientées-objets 2. Les bases de données objets 2. Les bases de données objets Yves Pigneur Stéphane Rey Ecole des HEC Université de Lausanne CH-1015 Lausanne [email protected] (+41 21) 692.3416

Upload: alesia

Post on 22-Jan-2016

52 views

Category:

Documents


0 download

DESCRIPTION

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 [email protected] (+41 21) 692.3416. Agenda. Introduction: problématique. SGDBO: définition; objectifs; ... - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Bases de données orientées-objets 2. Les bases de données objets

Bases de données orientées-objetsBases de données orientées-objets2. Les bases de données objets2. Les bases de données objets

Yves PigneurStéphane Rey

Ecole des HECUniversité de Lausanne

CH-1015 [email protected]

(+41 21) 692.3416

Page 2: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 19992

Agenda

• Introduction:– 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:

– ...

Page 3: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 19993

Problématique

MéthodeMéthode

MéthodeMéthode

MéthodeMéthode

MéthodeMéthode

MéthodeMéthode

DonnéesDonnées SGBD(R)

• Pourquoi n'enregistrons-nous pas les données dans un SGBD(R)?

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.

Page 4: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 19994

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.

Page 5: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 19995

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é;

– ...

Page 6: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 19996

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éthodeMéthode

MéthodeMéthode

MéthodeMéthode

MéthodeMéthode

MéthodeMéthode

DonnéesDonnées SGBDO

Page 7: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 19997

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;

– ...

Page 8: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 19998

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éritageVersionsHéritageVersions

Page 9: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 19999

SGBDO et AGL: exemple

SAP R/3SAP R/3

HumanResources

HumanResources

FinancialAccounting

FinancialAccounting

Manu-facturing

Manu-facturing

Business Objects Business Components

Base de donnéesobjet ?

Page 10: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199910

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éritageHéritage

Page 11: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199911

SGBDO et conception: exemple

Des objets ?

Page 12: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199912

SGBDO et bureautique

• Acheminer, traiter, archiver, détruire des objets:– messages (mail, fax, ...);

– documents;

– workflow;

– groupware;

– ...

Multimédia ...Multimédia ...

Page 13: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199913

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.

Page 14: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199914

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.

Page 15: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199915

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.

Page 16: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199916

Persistance (backup)

MéthodeMéthode

MéthodeMéthode

MéthodeMéthode

MéthodeMéthode

MéthodeMéthode

DonnéesDonnées

SGBDO

Reference/ou/ pointeur

Oid/ou/ identifiant

Mémoire (temporaire) Base (persistant)

Page 17: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199917

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>)

Page 18: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199918

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

NewDeleteGetName

...

Page 19: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199919

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

NewDelete...

PersonNP

NewDelete...

Page 20: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199920

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");

Page 21: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199921

Persistance par référence (2)

• Tout objet racine de persistance est répertorié dans un catalogue:– Name– Oid

• La persistance par référenceprésente l'avantage del'orthogonalité de la persistanceau type de données.

"John"

"Jack"

...

Catalogue

"Adresse"

"Voiture"

Page 22: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199922

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" BasePointeur invalide

Page 23: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199923

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.

Page 24: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199924

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

2. Violation3. Accès Serveur

4. Retour page

Page 25: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199925

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.

Page 26: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199926

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.

Page 27: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199927

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;}

Page 28: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199928

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

InsertDeleteCount...

Set

IncludeChoiceExistUnion...

List

FirstNextLast...

Page 29: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199929

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.

Page 30: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199930

Collections avec les SGBD(R)

• Une collection de personnes avec un SGBDO

• Une collection de personnes avec un SGBDR

ID NOM

1000 Bolomet

1001 Gorsjean

1002 Norton

1003 McDonlard

1004 Blanc

... ...

aCollect

Person...

aPerson

Person...

aPerson

Person...

#1

#2

Page 31: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199931

Exemple d'une collection de personnes

Collect

CollectaddElement

firstElement...

Person

Person...

aPerson

Person...

aPerson

Person...

aPerson

Person...

aCollect

Person...

Voir exemple Java - code ci-dessous

Page 32: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199932

Exemple de collection: class Document.java

import Document;

public class Person{

private String name;private String level;private Document[] read;

//Constructorpublic Person(String n, String l){

this.name = n;this.level = l;

}}

Page 33: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199933

Exemple de collection: class Collect.javaimport java.util.*;

class Collect

{private Vector collection;

//Constructor to create a vector

public Collect()

{ collection = new Vector();

} //Add an element to a vector

public void addElement(Person element)

{ collection.addElement(element);

} //Get first element

public Person firstElement()

{ return (Person)(collection.firstElement());

} //Get size

public int getSize()

{ return collection.size();

} //Enumeration

public Enumeration elements()

{ return collection.elements();

}}

Page 34: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199934

Exemple de collection: class TryCollection.java (1)import java.util.*;

import java.io.*;

import Document;

public class TryCollection

{//Main procedure

public static void main(String[] args)

{Collect aCollect = new Collect();

Person aPerson;

for(;;)

{aPerson=readPerson();

if(aPerson==null)

break;

aCollect.addElement(aPerson);

} Enumeration thisLot = aCollect.elements();

while(thisLot.hasMoreElements())

{System.out.println(thisLot.nextElement().toString());

}

} //Read keyboard

...

}

Page 35: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199935

Exemple de collection: class TryCollection.java (2)... //Read keyboard

static public Person readPerson()

{ BufferedReader kb = new BufferedReader(new InputStreamReader(System.in));

try

{ System.out.println("\nName: ");

String name=kb.readLine().trim();

if(name.length()==0)

return null;

System.out.println("\nLevel: ");

String level=kb.readLine().trim();

return new Person(name, level);

} catch(Exception e)

{ System.out.println(e);

return null;

} }

...

Page 36: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199936

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).

Page 37: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199937

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;

Page 38: Bases de données orientées-objets 2. Les bases de données objets

HEC Lausanne - 199938

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;– ...