Logo du groupe IPSI

Investigations 

Liste des investigations


Dossier : État des technologies de stockage d'objets en Java

Bienvenue !
Aide
Table des matières

Section :

1 2 3 4 5 6 7 8 9 10
Standards

ODMG

Java Database
Connectivity


Open Database
Connectivity


Java Serialization
et Java Core
Reflexion


Remote Method
Invocation


Java Naming and
Directory Interface


Common Object
Request Broker
Architecture et JIDL


Kona Infobus
(Lotus)


Distributed Component
Object Model

Section 3
Standards
ODMG


Ce modèle est en cours de révision et d'extension; la définition provisoire peut être trouvée sur le site web d'ODMG. Ce standard se compose de trois volets: un modèle objet propre, regroupant les caractéristiques communes aux langages cibles ; C++, Smalltalk et depuis peu Java. Cette définition est riche, en ce qu'elle doit entre autres définir des concepts de collections d'objets pour désigner les résultats de requête. Dans un second temps, un langage permettant de décrire les objets des différents langages supportés ainsi que les relations entre eux, en terme du modèle objet d'ODMG. À l'inverse, les collections du modèle objet d'ODMG doivent être implantés ou mis en correspondance avec des implantations propres aux langages spécifiques. Finalement, un langage de description de requêtes d'objets correspondant à SQL, et appelé OQL. Tentons de survoler les principales caractéristiques de ces composantes:

Modèle objet

Le modèle de base est un modèle classique à héritage multiple où les interfaces des objets sont découplées des implantations des objets dans les différents langages. Ce modèle est donc un peu plus riche que ce que permet Java (ou l'héritage de code est simple) mais fondamentalement compatible. Les objets sont créés via une fabrique (Factory), sont désignés comme transients ou persistants et les relations entre les objets doivent toujours être définies en paires inverses afin que les pointeurs puissent être traversés dans les deux directions. Les objets ont des identificateurs uniques permanents et peuvent être nommés ou indexés sur une ou plusieurs de leurs propriétés. Pour chaque type d'objets (classe), on peut demander l'extension de la classe, soit l'ensemble des objets de cette classe ou un sous-ensemble de cette extension qui prendra la forme d'une des classes de Collection d'objets (classes paramétrées par la classe de l'objet lui-même). Ces collections peuvent prendre un des formes suivantes: Bag, Set, List, Array, Dictionary. (Les définitions sont connues. Toutes les collections peuvent être parcourues et les Bag et Set permettent les opérations classiques d'union, d'intersection et de différence). La structure des types forme un ensemble de metadata, lui-même stocké dans la base de données. Le modèle définit aussi un modèle de transaction qui doit être atomique, consistante en tout temps, isolé des autres transactions, et durable.

ODL

ODL permet de décrire les interfaces d'une classe de manière indépendante du langage. À partir d'une telle description, une base de données qui suit le standard ODMG devrait automatiquement pouvoir déduire une représentation interne utilisable des objets décrits et les stocker. De plus, il devrait être aisé de réimplanter un tel objet dans un autre langage orienté-objet. ODL est en fait une extension de la syntaxe d'IDL adaptée au modèle objet d'ODMG, légèrement plus étendu que celui de CORBA à cause, entre autres, de la définition des classes de collection. ODL englobe la fonctionnalité des syntaxes de description de modèles objets suivants: STEP/PDES (EXPRESS), ANSI X3H2 (SQL), ANSI X3H7 (Object Information Management), CFI (CAD Framework Initiative) et d'autres.

OQL

OQL est un parent de SQL 92 qui permet la spécification de groupe d'objets par des requêtes complexes et l'appel de méthodes sur ces objets. Les requêtes OQL renverront une collection d'objets (ou de types élémentaires, ou de " structures " rassemblant plusieurs types), la nature de la collection (bag, set ou list) étant déterminée par l'utilisation de clauses d'unicité (select distinct, etc. ) et/ou de tri. Les résultats peuvent aussi être groupés en plusieurs bags nommés. Les prédicats peuvent être très élaborés, la syntaxe permettant des opérateurs d'inclusion entre les ensembles, et même des quantificateurs. Ce qui fait vraiment la force du langage, c'est la possibilité de faire appel aux méthodes des objets à tout moment dans une expression OQL, que ce soit pour sélectionner des objets ou pour accomplir un effet de bord dans la base de données.

Couplage avec Java

La définition par ODMG du couplage avec Java n'est pas encore complètement défini. Manque encore, par exemple, la syntaxe permettant de barrer des objets avant modifications. Pour la base, le consortium a employé une règle minimaliste: Tout objet peut être attaché par un nom à une base de données et tous les objets reliés à cet objet racine seront alors enregistrés du même coup. Il est possible d'exclure certains liens du stockage automatique. Pour toute classe, il est possible de demander l'extension de la classe ou une partie de celle-ci correspondant à un prédicat. C'est la partie la plus délicate: des comportements doivent être ajoutés au niveau de chacune des classes existantes, sans modification au code de celles-ci. ODMG propose trois moyens d'y parvenir: éditer le code Java à l'aide d'un préprocesseur, éditer les fichiers compilés directement, ou proposer son propre interpr éteur Java. Le choix de l'implantation est laissé au vendeur. Il doit être souligné que chacune de ces options pose des problèmes particuliers. Ainsi, les clients Web ne bénéficieront certainement pas d'un interpréteur modifié; la modification au code source ou compilé peut interférer avec d'autres mécanismes utilisant les même moyens pour modifier le code; etc. D'autre part, les notions de Database, Transaction et Query ont été définies comme des classes, alors que les collections sont des interfaces. (Le Vector de Java peut être substitué à la notion d'array de ODMG.)

Notons pour finir que même si le standard n'est pas complet, plusieurs membres du consortium ODMG ne l'ont pas attendu pour offrir des couplages de Java à leurs bases de données orientées-objet qui utilisent la définition en cours. Nous y reviendrons dans les sections relatives à chaque développeur.


 


 HAUT Mise à jour de ce document - 12 novembre 1997