Introduction
Proposition
Ça peut marcher ?
Références
Mon chat doit pouvoir comprendre. (C) (TM) (R)
Vos crédits sont épuisés, il n'y a plus un sou pour votre projet de base de données en ligne. [signé le DI]
Actuellement, on a :
mais pas
Par base de données libres nous entendons :
Exemple de données concernées :
Il semble qu'actuellement il n'existe pas pour l'accès aux bases de données
une standardisation satisfaisante...
Il existe de gros projets documentaires, mais les moyens utilisés sont
hors de portée de la plupart des entreprises ou organismes ou simples
particuliers.
L'idée de base est de séparer les serveurs de données des serveurs d'interface qui vont présenter ces données à l'utilisateur final (ça s'appelle le modèle "trois tiers" et ça se trouve dans tous les bons bouquins sur les bases de données)
Un même serveur de base de données peut être utilisé par plusieurs serveurs d'interface, un serveur d'interface peut utiliser plusieurs bases de données, ce qui suppose une normalisation
Chaque serveur de données comporte :
- des données ;
- un dictionnaire de données (normalisé) qui doit permettre au serveur
d'interface de savoir comment ces données sont structurées ;
- un annuaire pour trouver d'autres serveurs de données (la manière dont
ces annuaires sont mis à jour n'est pas discutée ici dans un premier
temps.
Le serveur d'interface est client des bases de données, et il est serveur pour l'utilisateur final : protocoles normalisés genre http, serveur d'application et client X avec serveur X chez l'utilisateur
Les spécifications étant publiées, tout le monde peut mettre en place son serveur d'interface, éventuellement confondu avec la machine utilisateur.
Il semble judicieux dasn un premier temps que toute entité ouvrant une base de données mette en place un serveur d'interface.
L'on pourrait choisir par exemple d'utiliser des bases de données avec protocole SQL, ou ODBC, ou du HTTP qui servira du XML...
Un petit exemple :
+-----------+ +-----------+ +-----------+
|serveur de| |serveur de| |serveur de|
| données | | données | | données |
+-----------+ +-----------+ +-----------+
serveur SQL serveur SQL serveur HTTP
| | |
+---------------------+----------------------+
| | |
client SQL client SQL client HTTP
+-----------+ +-----------+ +-----------+
| serveur | | serveur | | serveur |
|d'interface| |d'interface| |d'interface|
+-----------+ +-----------+ +-----------+
serveur HTTP application serveur HTTP
client X |
| | |
+---------------------+----------------------+
| | |
client HTTP serveur X client HTTP
Contraintes :
Avant, il va falloir réfléchir un peu aux spécifications des annuaires et des dictionnaires.
Une mise en oeuvre pour les tests pourrait être basée sur MySQL pour les bases de données, et pour les interfaces HTTP Apache + PHP ou scripts CGI.
Un système encore plus simple pour des données en lecture seule : un serveur HTTP délivre du XHTML judicieusement écrit. Le serveur d'interface l'interroge et transforme ce XHTML en XML plus classique, ce XML pouvant lui même être mouliné à volonté.
Voir notre page http://www.interpc.fr/mapage/billaud/selectll.htm et son code pour avoir une petite idée de la chose.
On peut imaginer sur le serveur d'interface un script CGI du style
wget -nv -O - http:///www.interpc.fr/mapage/billaud/selectll.htm
| moulinette
où la moulinette extrairait délicatement la substance XML de la page XHTML,
par exemple en transformant
<body class="selectll">...</body> en
<selectll>...</selectll> et le reste à l'avenant.
Voir une mise en oeuvre simple avec les sources à l'adresse suivante : http://www.melusine.eu.org/~billaud
Suggestions bienvenues à l'adresse mailto:billaud@interpc.fr
Dernière mise à jour le lundi 16 juillet 2001