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

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

Donnes
Donnes

Mthode
Mthode

SGBD(R)

Mthode
Mthode

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!

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.

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

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

Donnes
Donnes

SGBDO

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

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
Hritage
Versions
Versions

SGBDO et AGL: exemple


Business Objects

Business Components
Base de donnes
objet ?
Human
Human
Resources
Resources

Financial
Financial
Accounting
Accounting

SAP
SAPR/3
R/3

ManuManufacturing
facturing

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
Hritage

SGBDO et conception: exemple

Des objets ?

SGBDO et bureautique
Acheminer, traiter, archiver, dtruire des objets:

messages (mail, fax, ...);


documents;
workflow;
groupware;
...

Multimdia
Multimdia ...
...

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.

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.

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.

Persistance (backup)
Mmoire (temporaire)

Base (persistant)

SGBDO

Reference
/ou/ pointeur

Oid
/ou/ identifiant
Mthode
Mthode
Mthode
Mthode
Mthode
Mthode
Mthode
Mthode
Mthode
Mthode

Donnes
Donnes

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

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.

PObject

L'hritage assure la persistance automatique de tout


objet qui hrite de la classe PObject.

New{Persist}
Delete{Unpersist}
...

//Dclaration 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.

Personne
New
Delete
GetName
...

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

PersonNP

New
Delete
...

New
Delete
...

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

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

"Adresse"
"Voiture"

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 "John"

Objet
"Voiture John"

Pointeur invalide

Mmoire

Base

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.

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

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.

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.

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

Collections
Contenu des collections:

Collection

des valeurs {10, 20, 30, 40}


des objets <O1, O2, O3, ...,
On>

Dans les systmes objet, la


notion de collection est souvent
ralise par des classes
paramtres, encore appeles
classes gnriques ou patterns
de classes.

Insert
Delete
Count
...

Set

List

Include
Choice
Exist
Union
...

First
Next
Last
...

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.

Collections avec les SGBD(R)

Une collection de personnes


avec un SGBDO

Une collection de personnes


avec un SGBDR

aCollect
Person
...

#2
aPerson
Person
...

#1
aPerson
Person
...

ID
1000
1001
1002
1003
1004
...

NOM
Bolomet
Gorsjean
Norton
McDonlard
Blanc
...

Exemple d'une collection de personnes


Voir exemple Java - code ci-dessous
Collect

Person

Collect
addElement
firstElement
...

Person
...

aCollect

aPerson

aPerson

aPerson

Person
...

Person
...

Person
...

Person
...

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

//Enumeration
public Enumeration elements()
{
return collection.elements();
}

//Get size
public int getSize()
{
return collection.size();
}

//Get first element


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

//Add an element to a vector


public void addElement(Person element)
{
collection.addElement(element);
}

//Constructor to create a vector


public Collect()
{
collection = new Vector();
}

class Collect
{
private Vector collection;

import java.util.*;

Exemple de collection: class Collect.java

//Read keyboard
...

Enumeration thisLot = aCollect.elements();


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

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

import java.util.*;
import java.io.*;
import Document;

Exemple de collection: class TryCollection.java (1)

...

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

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

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;

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