Vous êtes sur la page 1sur 38

Bases de donnes orientes-objets

2. Les bases de donnes objets

Yves Pigneur Stphane Rey


Ecole des HEC Universit de Lausanne
CH-1015 Lausanne yves.pigneur@hec.unil.ch (+41 21) 692.3416

Agenda
Introduction:
problmatique.

SGDBO:
dfinition; objectifs; ...

Persistance des objets:


persistance manuelle; persistance par hritage; persistance par rfrence.

Navigation dans une base objet. Attributs:


...

HEC Lausanne - 1999

Problmatique
Pourquoi n'enregistrons-nous pas les donnes dans un SGBD(R)?
Mthode Mthode Mthode

Donnes
Mthode Mthode

SGBD(R)

L'objet devrait inclure des mthodes de lecture/criture dans la base; L'objet ne pourrait pas tre sauvegard comme une instance; Les types complexes ne pourraient pas tre grs; La transformation d'un schma objet en schma relationnel et inversment pose certaines difficults.

Le paradigme objet disparat!


3

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 fonctionnalits suivantes:
support d'objets atomiques et complexes; identit d'objets; hritage simple; hritage multiple (optionnel); polymorphisme; messages d'exception.

HEC Lausanne - 1999

Fonctions de base d'un SGBD (backup)


Fonctions de base pour grer une base de donnes:
indpendance physique des donnes; permanence des donnes; intgrit des donnes; possibilit de requtes; gestion des transactions; concurrence; scurit; ...

HEC Lausanne - 1999

Objectifs des SGBDO


Supporter directement les objets, c'est--dire pouvoir enregistrer des instances dans la base; rduire, voire liminer, les dysfonctionnements entre le langage de programmation et le langage de la base de donnes. (La plupart des SGBDO ont t intgrs C++;) partager le code rutilisable des applications de la base de donnes (exemple des objets mtiers).
Mthode Mthode Mthode

Donnes
Mthode Mthode

SGBDO

HEC Lausanne - 1999

SGBDO: pour quelles applications?


Les besoins des applications ncessitant un SGBDO sont les suivants:
donnes imbriques et fortement lies; donnes existant en de nombreuses versions; structure de donnes volumineuse et complexe.

Quelques exemples d'applications:


ateliers de gnie logiciel (AGL); conception assiste par ordinateur (CAO); fabrication assiste par ordinateur (FAO); bureautique; applications scientifiques et mdicales; ...

HEC Lausanne - 1999

SGBDO et AGL
Supporter le cycle de conception d'une application, de la dfinition des besoins l'application finale. Grer la configuration: gestion des accs concurrents un module, suivi des diffrentes versions de modules, et enregistrement des informations de dpendance (dterminer les modules recompiler). Grer le projet: spcification, dpendances, et planification des sousprojets.

Hritage Versions
HEC Lausanne - 1999 8

SGBDO et AGL: exemple


Business Objects
Base de donnes objet ?
Human Resources Financial Accounting

Business Components

SAP R/3

Manufacturing

HEC Lausanne - 1999

SGBDO et conception
Les outils de conception s'appuient sur une base de donnes intgre qui n'est pas accessible par l'utilisateur. Les outils de conception grent (exemple d'un circuit lectrique):
un langage de description du comportement; un schma fonctionnel; un schma logique; un schma de circuits; les sous-niveaux spcialiss; les masques de circuits intgrs.

...

Hritage

HEC Lausanne - 1999

10

SGBDO et conception: exemple

Des objets ?

HEC Lausanne - 1999

11

SGBDO et bureautique
Acheminer, traiter, archiver, dtruire des objets:
messages (mail, fax, ...); documents; workflow; groupware; ...

Multimdia ...

HEC Lausanne - 1999

12

Persistance des objets


La persistance est un mcanisme selon lequel des objets peuvent tre conservs sur mmoire secondaire (support physique). La persistance peut tre assure par les moyens suivants:
fichiers: un objet peut tre mmoris, 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 mthode "saveimage" de Smalltalk par exemple); bases de donnes: les objets peuvent tre ceux d'une base de donnes objets.

HEC Lausanne - 1999

13

SGBDO et persistance des objets


Le problme des SGBDO est d'assurer la persistance des objets sur un support physique. La persistance pose quelques problmes:
gestion des objets en mmoire et dans la base; performance d'accs aux objets; concurrence d'accs aux objets.

HEC Lausanne - 1999

14

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 rfrence en mmoire de l'objet.

HEC Lausanne - 1999

15

Persistance (backup)
Mmoire (temporaire) Base (persistant)

SGBDO

Reference /ou/ pointeur


Mthode Mthode

Oid /ou/ identifiant

Mthode
Mthode Mthode

Donnes

HEC Lausanne - 1999

16

Persistance manuelle (2)


//Retrouver l'Oid d'un objet persistant partir de son nom Oid = Lookup (<name>) //Activer un objet persistant dsign par son Oid ref = Activate (<Oid>)

//Dsactiver 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

17

Persistance par hritage (1)


La persistance par hritage permet de cacher au programmeur les mouvements d'objets entre la base de donnes et la mmoire. L'hritage assure la persistance automatique de tout objet qui hrite de la classe PObject.
//Dclaration de la classe Personne Personne subclass PObject Personne

PObject
New{Persist} Delete{Unpersist} ...

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.

New Delete GetName ...

HEC Lausanne - 1999

18

Persistance par hritage (2)


Inconvnient de la persistance par hritage:
il est impossible de dfinir une opration sur les objets qui soit indpendante de leur proprit 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

19

Persistance par rfrence (1)


La proprit de persistance est associe directement l'objet, et non sa classe. Tout objet peut tre une racine de persistance, et tout objet rfrenc par un objet persistant est persistant.

Cela ncessite un nouveau mot cl Persistant dans le(s) langage(s) de programmation, et une prcompilation qui gnre les appels aux fonctions Persist, Unpersist, Activate, etc.
//Cration d'un objet persistant martin : Personne; martin = new persistant("Martin");

HEC Lausanne - 1999

20

Persistance par rfrence (2)


Tout objet racine de persistance est rpertori dans un catalogue:
Name Oid
Catalogue "John"

La persistance par rfrence prsente l'avantage de l'orthogonalit de la persistance au type de donnes.

"Jack" ... "Voiture"

"Adresse"

HEC Lausanne - 1999

21

Navigation dans une base objet


Le problme de la navigation dans les bases objets consiste mmoriser de manire persistante les chanages d'objets sur support physique. L'objet en mmoire John pointe sur l'objet Voiture John.
Objet "John" Objet "Voiture John" Mmoire

L'objet mmoire John est crit dans la base. Utilis par une autre application, il pointe prsent sur un objet qui n'est plus prsent en mmoire.
Objet "John" Objet "Voiture John" Mmoire

Objet "John"
Pointeur invalide
HEC Lausanne - 1999

Base
22

Mutation de pointeurs (1)


Transformation consistant passer de pointeurs disques des pointeurs mmoires lors de la premire navigation en mmoire via un objet, et inversement lors de la dernire. Doubles pointeurs:
les rfrences mmoires sont remplaces par des couples <oid, ref>; les parties ref des couples sont mises 0 (zro); un objet est rfrenc partir de son Oid; la rfrence est charge avec l'adresse de l'objet en mmoire.

HEC Lausanne - 1999

23

Mutation de pointeurs (2)


Mmoire virtuelle (Single Level Store):
les objets utilisent la mme adresse en mmoire centrale et sur disque; la mmoire virtuelle contient une image exacte de la base de donnes (ou d'une partition de la base); une violation mmoire virtuelle en lecture est dclenche lorsqu'un objet rfrenc n'est pas en mmoire; le SGBDO retrouve la page de l'objet sur disque, et rend ladite page accessible en mmoire vituelle.
Page manquante Mmoire virtuelle (client)
1. Accs

4. Retour page 2. Violation 3. Accs Serveur

HEC Lausanne - 1999

24

Attributs des objets


Attributs simples ou littraux (entiers, nombres virgules flottantes, caractres, ...); Attributs de grande taille (binary large objets - BLOBs); attributs rfrences; attributs collections; attributs drivs.

HEC Lausanne - 1999

25

Attributs rfrences (relation de composition)


Les attributs rfrences (AR) sont utiliss pour reprsenter des relations entre objets; les AR prennent comme valeur des objets, c'est--dire des rfrences des entits;

les AR sont l'quivalent des pointeurs dans les langages de programmation, ou des cls trangres dans les systmes relationnels, avec deux diffrences majeures:
les attributs rfrencs sont incorruptibles; les attributs rfrencs ne sont pas associs des valeurs visibles; si l'tat d'un objet rfrenc est modifi, l'attribut rfrenc pointe toujours le mme objet.

HEC Lausanne - 1999

26

Attributs collections
Container typ dsign par un nom, contenant des lments multiples organiss selon une structure particulire.
Document: { title: STRING; document: DATE; keyword: SET[STRING] chapter: LIST[Chapter] }

Chapter: { title: STRING; number: INTEGER; }

Un ensemble (set) est une collection non ordonne, sans double; un sac (bag) est une collection non ordonne, qui accepte les doubles; une liste (list) est une collection ordonne, qui accepte les doubles; un tableau (array) est une collection ordonne et indexe.
La premire forme normale du relationnel interdit les attributs collections de valeurs (domaine atomique).
27

HEC Lausanne - 1999

Collections
Contenu des collections:
des valeurs {10, 20, 30, 40} des objets <O1, O2, O3, ..., On>
Collection Insert Delete Count ...

Dans les systmes objet, la notion de collection est souvent ralise par des classes paramtres, encore appeles classes gnriques ou patterns de classes.

Set

List

Include Choice Exist Union ...

First Next Last ...

HEC Lausanne - 1999

28

Collections et itrateurs
Une collection peut contenir plusieurs milliers d'lments. Il est plus efficace de renvoyer au programme un itrateur, au lieu de la collection elle-mme. Un itrateur est un objet part entire, qui possde les mthodes suivantes:
renvoyer l'lment; passer l'lment suivant; passer l'lment prcdent; terminer l'itration lorsque tous les lments ont t parcourus; repartir du premier lment; sauter un lment particulier.

Les itrateurs sont soit directement accessibles au sein du langage de programmation, dans quel cas l'itrateur n'est pas transaprent pour l'utilisateur, soit utiliss en interne au niveau des mthodes d'accs du SGBDO.
HEC Lausanne - 1999 29

Collections avec les SGBD(R)


Une collection de personnes avec un SGBDO
aCollect Person ...

Une collection de personnes avec un SGBDR

#2
ID NOM

1000
aPerson Person ...

Bolomet
Gorsjean Norton McDonlard Blanc

#1
aPerson Person ...

1001 1002 1003 1004

...

...

HEC Lausanne - 1999

30

Exemple d'une collection de personnes


Voir exemple Java - code ci-dessous Collect Collect addElement firstElement ... Person Person ...

aCollect Person ...

aPerson Person ...

aPerson Person ...

aPerson Person ...

HEC Lausanne - 1999

31

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

32

HEC Lausanne - 1999

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

Exemple de collection: class Collect.java


//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(); } }
33

HEC Lausanne - 1999

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.nextEl ement().toString()); } }

Exemple de collection: class TryCollection.java (1)

//Read keyboard ... }


34

HEC Lausanne - 1999

...

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

Exemple de collection: class TryCollection.java (2)

35

Attributs drivs
Les attributs drivs permettent de dfinir de manire procdurale une valeur d'attribut, en spcifiant une procdure excuter ds que la valeur est consulte ou affecte.
Document: { title: STRING; document: DATE; ... release: DATE PROC() = ToDay(); }

Les SGBDR permettent galement de dfinir de manire procdurale une valeur d'attribut:
triggers; stored procedures (Oracle).

HEC Lausanne - 1999

36

Et encore ...
Algbre pour objets complexes; groupage et dgroupage; algbre d'Encore; algbre sous forme de classes:
oprations de recherche; oprations ensemblistes; oprations de mise jour; oprations de groupe;

HEC Lausanne - 1999

37

Conclusion
Les bases de donnes objet soulvent de nombreux problmes difficiles.

Les problmes d'architecture:


architecture client-serveur d'objets; architecture client-serveur de pages.

Les problmes de performance:


utilisation de caches d'objets; utilisation de techniques de mmoire virtuelle; utilisation de mthodes de regroupements d'objets.

Et encore:
problmes de concurrence; problmes de transactions; ...
HEC Lausanne - 1999 38