Title: MATISSE
1MATISSE
- Les bases de données (orientés) objet
Nicolas DelestreLaboratoire PSI
2Un peu dhistoire
3Le SGBDOO MATISSE
- Caractéristiques générales
- SGBD Orienté Objet
- Jusquà 4 Milliards dobjets
- Taille maximale de chaque objet 4Go
- Multiplateforme (Serveur Sun, DEC VAX, Windows
NT, HP 9000/UX, etc.) - API en C, C, Smalltalk, JAVA
- Accès aux données rapide (Technologie RAID)
4Utilisation de le technologie RAID
2
1
3
1
2
3
2
3
5Comparaison
- Architecture RAID
- Architecture Multi-Thread
- Concurrence optimisé
Test avec 650 000 Documents
6Architecture de MATISSE
- Architecture client-serveur
Matisse Database Administrator
Matisse Editor
Clients
Silos
Serveur MATISSE
7Le versioning
- Principe
- La base garde trace de toutes les versions des
objets - Conséquences
- Accès temporel, lecture cohérente sans bloquage
t2
t1
t1
t
t
t
O1
O2
O3
O1
O2
O3
8Le méta-schéma
Mt Universal Method
Légende
Mt Internal FunctionMt DocumentationMt
Overridable
Mt Message
Classe
Relation
Mt SelectorMt Documentation
Attribut 1Attribut 2...
Mt Method
Mt Internal FunctionMt Documentation
Mt Relationship
Mt Attribute
Mt Class
Mt NameMt Relationship Check FunctionMt Before
Adding SuccessorMt After Adding SuccessorMt
Before Removing SuccessorMt After Removing
SuccessorMt Cardinality
Mt NameMt Default ValueMt Attribute Ckeck
FunctionMt Make Entry FunctionMt Before
Attribute Modification FunctionMt Type
Mt NameMt Instance Check Function
Mt Index
Mt NameMt Criteria SizeMt Criteria Order
9Définition du schéma
- Les modélisations objet sont implémentées telles
quelles - Exemple
MtAttributes
MtName NomMtType String MtDefaultValue
10Définition du schéma
11Définition du schéma
12Comment attaquer la base
- Depuis un langage non-objet - C
- Matisse fournit des fonctions
- De connections à la base
- MtConnect, MtDisconnect,etc
- D accès à la base
- MtStartTransaction, MtCommitTransaction, ...
- D obtention d objet, attributs, relations,
index - MtGetClassFromObject, MtGetValue,
MtGetSuccessors,... - De requête
- MtExecSQL,...
13Comment attaquer la base
- Depuis un langage objet - Java
- Grâce à un driver ODBC/JDBC
- Grâce à la persistance par héritage
- On définie le schéma de la base
- L éditeur peut alors générer un fichier ODL
- On obtient alors les classes JAVA avec les
méthodes d accès aux attributs et relations - Il ne reste plus qu à implémenter les méthodes
utilisateurs
14Exemple de fichier ODL
// --c-- // //
Generated schema description // in MT_ODL (c)
from ADB MATISSE // // Generation date Fri Feb
05 104129 1999 // Generated from database
personne on host LIRNTSERVEUR // // Interface
Definitions //---------------------- interface
Adresse persistent relationship
ListltPersonnegt AdresseToPersonne inverse
PersonnePersonneToAdresse interface
Personne persistent attribute MtString Nom
"" relationship ListltAdressegt
PersonneToAdresse inverse AdresseAdresseToPe
rsonne
15Exemple de fichier JAVA
// --java-- // //
Personne.java // // Created with release 4.0.0 of
mt_odl (c) from ADB MATISSE // Creation date Fri
Feb 05 104301 1999 // the package and extends
declarations // are generated by mt_odl, do not
modify them public class Personne extends
MATISSE.MtObject // BEGIN generation of
accessors by mt_odl // DO NOT MODIFY UNTIL THE
'END of mt_odl generation' MARK BELOW //
generated with release 4.0.0 of mt_odl (c) from
ADB MATISSE // Date Fri Feb 05 104301
1999 // Class variables and methods //
--------------------------- // default
constructor public Personne(MATISSE.MtClass
aClass) throws MATISSE.MtException
super(aClass) // static methods public
static MATISSE.MtObjectCursor openInstanceCursor(i
nt numObjPerBuffer) throws MATISSE.MtException
return mtClass().mtOpenInstanceCursor(numObjPe
rBuffer)
16Exemple de fichier JAVA
// Attributes // ---------- // Nom private
static MATISSE.MtAttribute nom null public
static MATISSE.MtAttribute nom() if (nom
null) nom MATISSE.MtAttribute.mtInitializer
("Nom", "Personne") return
nom public java.lang.String getNom() throws
MATISSE.MtException return mtGetString(nom())
public Personne setNom(java.lang.String val)
throws MATISSE.MtException mtSetString(nom(),
val) return this public Personne
clearNom() throws MATISSE.MtException
mtRemoveValue(nom()) return this
17Exemple de fichier JAVA
// Relationships // ------------- //
PersonneToAdresse private static
MATISSE.MtRelationship personneToAdresse
null public static MATISSE.MtRelationship
personneToAdresse() if (personneToAdresse
null) personneToAdresse MATISSE.MtRelations
hip.mtInitializer("PersonneToAdresse",
"Personne") return personneToAdresse p
ublic MATISSE.MtObjectSetCursor
getPersonneToAdresse() throws MATISSE.MtException
return mtOpenSuccessorCursor(personneToAdresse
()) public int getPersonneToAdresseCardinalit
y() throws MATISSE.MtException return
mtGetSuccessorNumber(personneToAdresse()) pub
lic Personne appendPersonneToAdresse(MATISSE.MtObj
ectVector succs) throws MATISSE.MtException
mtAddSucc(personneToAdresse(),
succs) return this public Personne
appendPersonneToAdresse(MATISSE.MtObjectSetCursor
succs) throws MATISSE.MtException
18Exemple de fichier JAVA
mtAddSucc(personneToAdresse(), succs) return
this public Personne appendPersonneToAdresse(
MATISSE.MtObject succ) throws MATISSE.MtException
mtAddSucc(personneToAdresse(), succ,
MATISSE.MT.APPEND) return this public
Personne pushPersonneToAdresse(MATISSE.MtObject
succ) throws MATISSE.MtException
mtAddSucc(personneToAdresse(), succ,
MATISSE.MT.FIRST) return this public
Personne insertPersonneToAdresse(MATISSE.MtObject
succ, MATISSE.MtObject after) throws
MATISSE.MtException mtAddSucc(personneToAdress
e(), succ, after) return this public
Personne removePersonneToAdresse(MATISSE.MtObjectV
ector succs) throws MATISSE.MtException
mtRemSucc(personneToAdresse(),
succs) return this public Personne
removePersonneToAdresse(MATISSE.MtObject succ)
throws MATISSE.MtException mtRemSucc(personneT
oAdresse(), succ) return this public
Personne clearPersonneToAdresse() throws
MATISSE.MtException mtClearSuccs(personneToAdr
esse()) return this
19Un exemple SEMUSDI
- SEMUSDI
- est une encyclopédie multimédia sur les sciences
de lingénieur, - permet à des enseignants, étudiants, chercheurs
et ingénieurs de rechercher, consulter,
télécharger et soumettre des documents via le
Web, - est composé déléments de base (briques
élémentaires)
20Larchitecture de SEMUSDI
21Le modèle objet de SEMUSDI
22L architecture future de SEMUSDI
Java Script
Packages
Solution 1
Servlet
Java Script
MATISSE
Sockets, CORBA
Applet
Serveur Java
Java
RMI or HORB
Solution 2
Serveur
Client
23Conclusion MATISSE
- Une base de donnée
- Fiable
- Rapide
- Souple à utiliser
- Malheureusement
- Peu répandu
- Peu doutils d administration et développement