DOSSIER omment stocker les objets

publicité
DOSSIER
Mots-clés :
omment
stocker
les
objets
?
Orienté-objet,
Relationnelobjet,
Persistance,
SGBD.
par Philippe BRIDON, membre du Cercle Objet du Club Génie Logiciel de la SEE
Le développement
techniques
nombreux
croissant
orientées objet conduisent de
projets à utiliser une analyse
et une conception
d'une
orientées
implémentation
orienté
objet
Pour certaines
nécessaire
données
des
comme
objet suivie
avec un langage
C++
ou Java
applications,
d'assurer
et donc
[1
des
dans ce cas des objets.
Or les techniques
de stockage
objets sont multiples
évolution.
pour
Plusieurs techniques sont disponibles avec les
SGBD objet, les plus adaptés, les SGBD relationnels-objet, récemmentapparus, et les couplagesà
des SGBDrelationnelsou des systèmesde fichiers.
il est
la persistance
Avec l'essorde la technologieobjet pour l'analyse
'se
et la conceptionse pose le problème de la persistance des applications écrites en objet (C++,
Java...).
les
et en pleine
Mais l'offre techniqueet les produits évoluent rapidement. Lechoix n'est donc pas simple et doit tenir
compte non seulement d'aspects technologiques
mais également industriels (productivité, exploitation, pérennité du fournisseur...).Sans oublier de
se poser la question : désire-t-onconcevoir un système d'information ou une application persistante.
PROBLÉMATIQUE
Les besoinsde persistancede donnéesdans une application sont divers :
- conserverune trace des donnéesentre deux sessions,
- assurerla sécurité et la fiabilité des donnéesen cas d'incident au cours d'une session,
- partager des données entre plusieurs utilisateurs ou
applications.
La persistancedes informations est relativement maîtrisée pour des techniques dites " classiques " (modèles
entité/relation ou Merise, codageen C ou Cobol...). Dans le
domaine orienté objet, la jeunessede la technologie induit
encore quelques tâtonnements. Les structures de données
plus complexes du modèle objet (objets composites,références, héritage...) nécessitent des approches de stockage
adaptées: verrouillage sur les objets, requêtesnavigationnelles, indexation sur les instancesde sous-classes...
La solution idéale semble l'emploi de systèmesde gestion de basesde données(SGBD) orientés objet. Mais les
produits sont jeunes, le marché en forte évolution et les
standardsémergeants.Utiliser des solutions éprouvéespeut
semblerplus rassurantdans une logique industrielle (pérennité des acteurs et standards) mais leurs paradigmes peuvent imposer des contraintes de conception et de réalisation. D'autres solutions plus simples ou innovantes sont
égalementdisponibles sur le marché. Si l'on tient compte
de l'ensembledes critères (adéquationdu modèle objet à la
techniquede stockage,productivité en développement,performancesen exécution, pérennité...) chaque solution a ses
avantageset sesinconvénients.
With the successof the object-oriented technology
for analysis and design, comes the problem of
making persistent applications, written in object
(C++, Java).
Several techniques are available such as object
DBMS, the more suitable, relational-object DBMS,
recently appeared, and gateway to relational
DBMSand file managementsystems.
But the technical offer and the products change
quickly. Thus, the choice is not easy and must
include technologicalrequirementsand also industrial strengths(productivity, administration, trust in
future of the provider...). Without forgotten, the
right question to wonder : do we want designing
an information systemor a persistentapplication ?
QUELQUES SOLUTIONS
Cinq solutions majeurespermettent de stocker les objets
définis dans une application conçue et implémentée avec
des techniques objet (figure 1). Ces solutions sont présentées selon une adéquation décroissante à la technologie
objet, soit depuis l'utilisation d'une base de données objet
jusqu'à un stockage " maison" dans des fichiers. Cet ordre
fait donc apparaîtreune croissancede la gestion des donnéesdans la partie applicative, la solution avec SGBD objet
tendant à rendre transparentela persistancedes objets.
REE
NI 6
juin 1998 i 73
LE GÉNIE
LOGICIEL
: LES CONCEPTS
Mais, comme toute industrie naissante, les SGBD objet
Tout objet
La voie royale est bien entendu le SGBD objet dont le
principe... est de rendre persistant les objets (ObjectStore
d'Object Design, 02 d'02 Technology, devenu après fusion
Ardent Software...). Les SGBD objet réunissent les caractéristiques connues des SGBD (gestion de la concurrence,
gestion des accès et échanges, sécurité, fiabilité...) mais
selon un paradigme de stockage objet (structures complexes, héritage, identité d'objet...) [2]. L'objectif est d'offrir une persistance transparente, c'est-à-dire qu'hormis les
déclarations de création des objets et la gestion des transactions, la programmation
est rigoureusement
la même.
L'avantage évident est de supprimer la frontière entre les
manipulations des données dans le programme et dans la
base de données ( " impedance mismatch ") et les contorsions
entre par exemple le monde C et le monde SQL.
Autre avantage, la conception de la base de données est
directement issue du modèle objet de conception de l'application. Ce sont les classes " marquées " persistantes dans le
modèle. Non seulement, il n'est pas nécessaire de mener
une étude de conception de l'application en parallèle de la
modélisation conceptuelle de ses données (MCD), mais les
objets sont les mêmes.
Dernier avantage, ces SGBD objet ayant l'objet même
pour paradigme de stockage, il leur est aisé de faire des
recherches par objet (identifiant unique), de les regrouper
sur disque par classes d'objet ou bien par composé et ses
représentent encore pour beaucoup de décideurs un risque
industriel majeur : nombreuses start-up, sans leader apparent, standard
(ODMG)
récent encore partiellement
appliqué
[3]. En outre, pour les sociétés, qui viennent à
peine de faire la migration vers le relationnel et le langage
de requête SQL, se former à un nouveau standard apparaît
comme trop coûteux. En outre, la plupart de ces produits
sont encore jeunes (fonctionnalités stabilisées, fiabilité...),
et restent faibles sur les aspects exploitation et tenue en
charge (transactionnel lourd, haute disponibilité,
d'architectures distribuées complexes).
support
D'autre part, il faut noter que les performances ne sont
pas toujours au rendez-vous.
En effet, sur certains
domaines applicatifs, les requêtes ensemblistes sont au
contraire les plus répandues. Or les SGBD objet n'ont pas
encore acquis la maturité des SGBD relationnels sur ce
point. Ces derniers permettent d'optimiser les requêtes et
de faire des traitements sur le serveur (procédures stockées) qui permettent de limiter le flux des informations
entre le serveur et le client. Par exemple, augmenter de
10% tous les employés avec un SGBD objet, nécessite de
charger chaque instance d'employé sur le poste de travail
client, pour y calculer son nouveau salaire, puis de restocker sur le serveur la nouvelle valeur. Le gain de la technologie objet sur le parcours navigationnel est ici perdu dans
des flux de données trop importants sur le réseau. Bien
composants. Toutes les applications de XAO notamment
où les requêtes sont essentiellement navigationnelles (pas-
entendu, la plupart des vendeurs de SGBD objet se penchent sur la possibilité de faire exécuter des traitements sur
le serveur ( " load balancing ") et de faire des indexations et
ser d'un objet à un de ses composants ou associés, suivre
optimiseurs de requêtes adaptés au modèle objet (ex : 02).
des références...) deviennent très performantes. En effet,
dans ce cas, un SGBD objet se contente de faire du parcours de pointeur, tandis qu'un SGBD relationnel peine sur
des jointures multiples.
Tout Objet
ob » te
Relationnel-Objet
1 Obiab
om
Mais peut-être qu'un des grands désavantages des SGBD
objet provient justement de leur argument de vente, la
transparence de la persistance. Le risque méthodologique
est en effet de concevoir des applications persistantes au
Conversion
Obl « a
f »gr*mme
C*+
.
4
Fichiers
Encapsulation
Pmomnxn* C+*
1 , Rbqub*SOL,
jiï4uae SOL3 Rbqub* SOL iibwo.
mômis
tj)
Mt) « t)ft*lationrit
e)at)ont'
Objet
1'om4m
om
Me'tteMawM).
111
eoqt"
PtaaNtWfMC
sç.,
fumaffla
Imm
nn
u
oj
*bd 1
r'._>
Objets
SGBDO
: :'3
e
ObjetsrTables Tables Fichiers
SGBDRO
_3
e
SGBDR
1. Cing techniques de stockage d'objets.
REE
'-'NI 6
74 Juin1998
JB
c
Fchiers
SGBDR
SGF
Comment
lieu d'applications exploitant une base de données. Il faut
rappeler que la démarche système d'information et SGBD
a justement pour intérêt d'isoler la connaissance/les informations de l'Entreprise des applicatifs qui les exploitent et
qui sont souvent moins stables et pérennes. La transparence apportée par les SGBD objets nuit parfois à la réflexion
sur la modélisation des applications, à l'identification des
objets du domaine, persistants, et ceux des applicatifs,
transcients. Alors que le marketing objet argumente sur la
réutilisation,
on peut se demander dans certains systèmes
objets si la base de données est effectivement partageable
(réutilisable) par de nouvelles applications.
Objet-Relationnel
Intermédiaire entre le modèle relationnel et le " pur objet ",
une nouvelle gamme de SGBD perce actuellement sur le
marché. Qualifiés de serveurs d'objets complexes, de relationnels étendus ou d'objet-relationnels (Informix Dynamic
Server d'Informix
après rachat d'Illustra,
UniSQL/X
d'UniSQL), ces SGBD proposent d'étendre l'approche relationnelle et donc le langage SQL pour la manipulation des
données complexes. L'idée est de pouvoir manipuler de nouveaux types de données (abstract data type), avec leurs procédures adaptées de sélection, indexation et manipulation
(DataBlade d'Illustra) et des extensions au langage SQL
comme l'héritage, les valeurs multivaluées et les types de
données abstraits avec attachement de procédures associées.
Cette offre est poussée par les vendeurs de SGBD relationnels qui veulent adapter leurs serveurs aux applications multimedia (serveurs web, imagerie, SIG, VOD...).
L'intérêt est d'être facilement pris en main par des administrateurs de bases de données généralement formés à
SQL et d'avoir des performances élevées grâce au savoirfaire acquis dans la réalisation de serveurs pour SQL (optimiseur de requêtes, cluster, techniques d'indexation, traitements sur le serveur...). Un autre avantage est de pouvoir
fédérer facilement des SGBD objet-relationnels avec des
SGBD relationnels
existants ( " legacy system ") à travers
l'usage commun du langage SQL. La passerelle fédératrice
(ex : UniSQL/M) se charge d'analyser les objets complexes
et d'éclater les requêtes selon nécessité sur les différents
serveurs de stockage.
Côté désavantage,
tout comme les SBGD
objet, les
SGBD objet-relationnels sont très récents. La pérennité de
ces start-up n'est pas assurée aujourd'hui. Quelle est en
outre la pérennité de ces vendeurs entre les SGBD objet
qui ne tarderont pas à s'affirmer comme des produits complets et fiables et les fournisseurs majeurs de SGBD relationnels actuels qui font évoluer leurs noyaux (Sybase
Adaptive Server, Oracle V8...) ou achètent la technologie
(déjà fait par Informix avec Illustra) ? De plus, quoiqu'en
dise le marketing, ces produits avant-gardistes sont encore
en dehors de tout standard, puisqu'ils proposent des extensions à SQL qui seront standardisées au mieux dans SQL 3
(en 1998 ou 1999 ?) [4].
stocker
les objets
?
Conversion
Cette approche et la suivante reposent sur une solution
où la conception/programmation
objet a été retenue, mais
un SGBD relationnel a été préféré pour stocker les informations. Compte tenu que le modèle relationnel est moins
riche que le modèle objet, il est nécessaire de convertir le
modèle objet, de " l'aplatir " dans un modèle tabulaire. Bien
entendu, l'objectif est de réaliser le couplage entre l'application objet et le SGBD relationnel de la façon la moins
douloureuse en conception et la plus efficace en exécution.
Des outils de conversion objet/relationnel
apparaissent
sur le marché. Le principe est de marquer dans un modèle
de conception orienté objet, les classes que l'on désire faire
persister, puis de générer le schéma de base de données
relationnel correspondant. Ces convertisseurs s'appuient
sur des règles génériques de transformation
de liens
sémantiques (héritage, agrégation, association l :n ou
n :m...) en tables relationnelles [5]. Il existe des outils indépendants comme Persistence de Persistence ou bien des
générateurs inclus dans des ateliers de conception tels
qu'Objecteering de Softeam.
L'avantage est de convertir automatiquement le modèle de
conception objet en un modèle relationnel. Ainsi, si le stockage profite des avantages des produits relationnels (pérennité, maturité, fiabilité...), la conception de l'application et
du modèle de données demeurent dans le monde objet et il
n'y a pas de conception séparée de la base de données.
Le désavantage principal est de ne pas être maître/
conscient du modèle conceptuel et surtout physique de la
base relationnelle. Or les règles de conversion sont souvent
trop génériques pour être systématiquement applicables et
les outils incomplets (certains cas d'association sont mal
couverts). Si l'on désire optimiser les performances, il
devient alors nécessaire de se pencher sur le modèle relationnel généré ou de biaiser la conception objet initiale
pour que les classes persistantes soient générées vers un
modèle relationnel efficace. Le second désavantage, lié à
l'utilisation d'un SGBD relationnel, est que les performances sur des accès navigationnels, courants dans des
applications objet, resteront faibles (jointure de tables vs
parcours de pointeurs).
Encapsulation
Une alternative moins automatisée est de distinguer la
conception (objet) de l'application et celle (relationnelle)
de la base de données. Comme une application classique
en C ou Cobol, l'application
doit charger ses propres
variables avec des informations extraites de la base de données. L'intégration se contente d'être une encapsulation
" objet " de la base de données, notamment pour sa manipulation afin d'intégrer plus facilement les échanges avec le
SGBD dans le code orienté objet. Plusieurs bibliothèques
existent sur le marché (RogueWave DBtools.h++, Ilog
DBlink), avec souvent l'avantage d'offrir une indépendance
par rapport au produit relationnel utilisé.
REE
6 1i :i
.,,,6
Jmnl998
i.. 1998
LE GÉNIE
LOGICIEL
: LES CONCEPTS
L'avantage que l'on peut reconnaître à cette solution, est
de s'appuyer sur un SGBD relationnel, dans la mesure où
l'on ne désire pas prendre le risque des technologies objet
ou relationnel-objet. Par contre, les données manipulées et
stockées restent dans un monde non objet, et se pose le
problème des performances pour des requêtes navigationnelles à travers les objets.
-
système d'information
ou applications persistantes en
C++ ou Smaltalk, couplage avec des bases existantes,
-
productivité en développement et maintenance, perfor-
mances en exécution, facilités en exploitation,
-
pérennité de l'offre, du produit, du fournisseur...
Autre avantage, c'est probablement la solution la plus
viable pour concevoir une (nouvelle) application autour
d'une base de données existante, souvent en relationnel ou
Quoiqu'il en soit, il s'avère que les solutions de stockage
pour des objets sont diverses et que même sur le marché
étroit par exemple du C++ persistant, les SGBD objet ne
sont pas forcément incontournables.
En conséquence,
de migrer progressivement des applicatifs anciens en pro-
même sur un marché de la technologie objet en plein essor
grammation objet. Par rapport à la solution précédente,
celle-ci à l'avantage de la maîtrise du schéma de la base
(méthodes, outils d'analyse/conception, programmation...),
les SGBD objet ne font pas le plein de leur clients potentiels et que d'autres technologies plus récentes (ex : objet-
puisqu'il faut le concevoir soi-même et de la possibilité de
foptimiser explicitement, soit pour un fonctionnement relationnel (cas des bases existantes), soit pour un fonctionnement objet. Par rapport à la problématique des SGBD objet
relationnel) ou anciennes (ex : relationnel) ont leur place.
qui risquent de conduire à des applications persistantes, on
se place par contre dans ce cas, dans une logique de
Références
conception autonome de la base d'information (définition
des structures, relations, règles d'intégrité et de gestion...)
[1] Du C++ à Merise Objet : Objets, par M. Bouzhegoub, G.
Gardarin et P. Valduriez, chez Eyrolles, Paris, 1994
indépendante des traitements qui peuvent avoir lieu.
Le principal désavantage, est d'avoir à réaliser soi même
tout l'interfaçage entre le modèle objet applicatif et le
modèle relationnel du SGBD. On peut être rapidement
amené à écrire une surcouche SGBD objet sur un SGBD
relationnel (transaction, verrou, distribution) puisque, par
exemple, non seulement le modèle de stockage est le modèle relationnel, mais le modèle de verrouillage également.
Fichiers
Dans cette solution simpliste, l'application gère explicitement la persistance des données par des lectures/écritures dans des fichiers. Pour chaque classe, les méthodes
lire et écrire sont décrites, avec des difficultés non négligeables lors de la mise à plat des objets pour le stockage
(déréférencement des pointeurs) et inversement la reconstruction des structures complexes à la lecture. Cette solution sans SGBD ne peut pas offrir les services de ceux-ci,
soit le partage entre plusieurs utilisateurs, les reprises sur
incident... à moins d'une programmation très lourde de ces
fonctionnalités. Cette solution " rustique " est plutôt à réserver pour conserver des informations, si possible de structure simple, entre deux sessions (ex : paramètres de configuration, données initiales). L'implémentation de cette solution pourra être allégée par l'emploi de bibliothèques
offrant des classes fichiers, répertoires...
CONCLUSION
Il existe donc plusieurs solutions de stockage des objets,
plus ou moins adaptées au paradigme objet, performantes
et fiables industriellement. Faute de solution universelle,
chaque cas devra être évalué en fonction de ses priorités :
REE
N, 6
Juin1998
[2] The Object-Oriented Database System Manifesto, par M.
Atkinson, F. Bancilhon, D. De Witt, K. Dittrich, D. Maier, et D.
Zdonick, actes de la conférence DOOD'89, Kyoto, 1989.
[3] The Object Database Standard : ODMG-93, par R.G.G.
Cattel, T. Atwood, J. Duhl, G. Ferran, M. Loomis et D. Wade,
version 1.1, chez Morgan Kaufmann Publishers,San Francisco,
1994.
[4] Database Language SQL3, International
Organization, ISO-ANSIworking draft.
Standard
[5] Object Engineering: The Fourth Dimension, par Ph. Desfray,
chez Addison-Wesley, Paris, 1994.
PhilippeBRIDON estconsultant
entechnologie
orientée
objetetgénielogiciel. A ce titre,il assure
la veille technologique
surlesproduitset méthodes
orientés
objet,leurmiseenplaceet l'animation
technique
desprojets.Il travaille
actuellement
chezungrandéquipementier
entélécommunication.
Actifdepuis
dix anssurcesujet,il participeauCercleObjetdu ClubGénieLogiciel(19)de
la SEEet au GroupeCOOSI(ConceptionOrientéeObjet desSystèmes
d'Information)
del'AFCET.Il aundiplômed'Ingénieur
det'ISEP,complété
d'un
mastère
deGénieLogicielduCERICS.
Abréviations
DBMS
DataBase Management System
MCD
Modèle Conceptuel de Données
ODMG
Object Database Management Group
SGBD
Système de Gestion de Bases de Données
SIG
Système d'Information
SQL
VOD
Structured Query Language
Video On Demand
XAO
<technique> Assistée par Ordinateur
Géographique
Téléchargement