mercredi 1 avril 2009

Open Source - Bdd Sans Confetti

Technologie Baobab - Une Architecture ouverte (Boîte à outils)Qu’est ce que la technologie Baobab ?La technologie Baobab est un concept d’architecture ouverte de base de données reposant essentiellement sur le fait que les informations :
- sont stockées dans des tables, les unes à la suite des autres séparées par des balises,
- et ne sont pas reliées entre elles par des pointeurs.
C’est une extension des concepts XML, avec plusieurs particularités importantes, à savoir :
- pour obtenir les meilleurs performances en vitesse et capacité on gère de manière très rigoureuse les disques et la mémoire,
- en particulier on s’efforce de regrouper dans la même table (ou le même fichier) les données relatives au critère majeur de la base de données (primary index), afin d’éviter que ces données ne soient atomisées en de multiples endroits sur les disques.
- Cette précaution rend souvent inutile les mises à jour au sens traditionnel du terme, car un simple et très rapide balayage en mémoire permet de reconstituer la situation actuelle en partant de l’ensemble des mouvements stockés dans l’ordre chronologique,
Le fait qu’il y ait des balises et non pas des pointeurs permet :
- de mélanger à la fois des données structurées (à l’instar des SGBDR) et des données de type texte (comme celles que l’on trouve dans les systèmes de recherche documentaire),
- de couper ces tables en de multiples morceaux et donc de les stocker selon les besoins sur différents supports, à savoir :
. dans la mémoire, ou sur un ou plusieurs disques de la même machine,
. sur différentes machines (des clusters de serveurs) dans un même lieu ou des lieux différents selon un mode coopératif, afin de réduire les temps de traitement,
- de facilement dupliquer (en mode broadcast) ces tables à l’octet près; pour avoir en permanence des copies de la même base de données.
Disposer pour un coût raisonnable en différents lieux de la même base de données installée sur des grappes de serveurs est un moyen efficace pour à la fois augmenter le trafic (ou réduire les temps de réponse) et assurer une disponibilité et sécurité élevées.

Comment se situe Baobab par rapport aux autres solutions DataWharehouse ?

Depuis des années, et particulièrement durant la décennie 1990-2000 de multiples architectures ont été imaginées pour stocker, maintenir à jour, et retrouver rapidement l’information sur un site central.
Parmi le les courants les plus actifs, on peut citer celui des Object DataBase Management System ODBMS voir
http://www.odbms.org/introduction.html issus des travaux de Francois Bencilhon de l’Inria, (O2), et de MCC (Microelectronics and Computer Technology Corporation).
Ils ont démarré avant Java, mais procèdent de la même logique (sans doute trop ambitieuse) d’encapsuler les données dans un modèle objet.
Un autre courant est celui du Parallel DataBase Management (Parallel DBMS) avec 2 tendances «shared disk» et «shared nothing» que l’on retrouve dans des produits tels que Teradata, Netezza et dans la Open Ingres Techology utilisée par DatAllegro, et qui ont la particularité d’offrir une interface SQL et une architecture parallèle, ce qui est particulièrement difficile (et lourd) pour des raisons évidentes de cohérence de l’information.
A la différence des autres, la techno Baobab repose sur une approche pragmatique (et purement financière) du problème, et part du postulat suivant :
Quand il y a un « Primary Index » tellement majeur que la plus grande partie de l’information peut-être regroupée sur ce primary Index, on arrive à construire des systèmes simples, robustes et performants avec les matériels actuels.
Cette rusticité est compensée par une architecture ouverte (mode Boîte à Outils), qui permet d’utiliser d’autres techniques pour résoudre ce que ce type de base de données à plat ne sait pas faire.

Mise en œuvre de la technologie Baobab .
La technologie Baobab permet de constituer des applications performantes avec une économie de moyens matériels importante, mais pour de multiples raisons (coût des études, délais de mise au point, impératifs de sécurité, maintenabilité, appel à d’autres technologies efficaces ou particulièrement éprouvées …)
Baobab n’est pas un logiciel plus ou moins fermé à l’instar des SGBDR ou systèmes documentaires, mais une boite à outils avec des modules spécifiques pour réaliser du sur-mesure pour un prix inférieur à celui du produit sur étagère.

Le support de cette boite à outils est ACE,
http://www.cs.wustl.edu/~schmidt/ACE-overview.html ,un atelier logiciel Open Source en C++, qui gère les aspects multi-tâches et protocoles et permet d’encapsuler simplement :
- des modules développés par Baobab (voir plus loin)
- des modules spécifiques de l’application
- et des outils particulièrement performants :
. Modules d’Intelligence artificielle,
. SGBDR (le plus souvent de petite taille) :
.. pour gérer les relations hiérarchiques
.. ou bien la supervision d’une architecture Baobab complexe baptisée «VarChar» comme celle décrite plus loin
.. ou encore assurer des fonctions difficilement gérables avec des fichiers à plat (comme par exemple le data-mining).
Cette approche objet (comparable à celle offerte par le langage Java) n’est pas imposée, mais c’est celle qui a été utilisée pour générer le code utilisé par les maquettes fournies avec quelques exemples d’architectures proposées ci-après.
Il faut noter que ce code très compact exécute infiniment moins d’instructions que les SGBDR, ce qui explique en partie les performances obtenues.

Domaines d’application de la technologie Baobab

Par son aptitude à gérer de manière économe des flux de données importants et de gros volumes, la technologie Baobab trouve son principal champ d’application dans les puits de données plutôt figées, ce qui statistiquement représente la plus grande partie de l’information stockée en mode centralisé.Pour avoir une idée de ce pourcentage, il suffit de savoir que dans le seul secteur financier (banque, assurance, …) toutes les informations qui sont vieilles de plus d’une journée (c'est-à-dire en dehors de la journée comptable en cours), relèvent de cette catégorie.

Une façon simple de réduire les dépenses d’exploitation informatique d’une entreprise de ce type est de vider une grande partie du contenu des immenses bases de données traditionnelles, (par exemple les opérations de plus d’un mois) et les placer sur des petits serveurs permettant un accès tres rapide par No de client.
Par contre, les applications transactionnelles qui dans leur grande majorité ont déjà été développées sur des SGBDR ou avec des ateliers de type SAP ou People-Soft, pour des raison évidentes de coût de migration, à court terme ne sont pas concernées par cette technologie malgré ses atouts.

Exemples d’architecture

Les possibilités de la technologie Baobab sont illustrées par une série d’exemples d’architecture, décrites ci-après et auxquels correspondent des schémas ;
Pour une bonne compréhension, il est indispensable d’avoir vu les démonstrations et maquettes qui les accompagnent, et qui ne sont pas reprises dans ce document.

Exemple N°1 système de suivi des voitures volées ; techniques utilisées :
- balayage rapide en mémoire de blocs de taille fixe (5 Go/sec)
- mise à jour d’une table par ajout d’événements à la fin,.
- réplication de la base de données par broadcast,
- cryptage de toutes les données sur disque,
- éclatement d’une base de données sur des milliers de PC





Exemple N°2 puits de données stockés sur un cluster de PC pilotés par un serveur à la fois pour l’archivage des nouvelles données et pour les requêtes (cf tickets téléphoniques) ; aspects marquants :
- stockage des tickets regroupés par paquets de 10.000, sur un ou plusieurs disques du cluster de PC (quasiment pas de traitement au moment de l’archivage, et donc possibilité de volume en entrée très élevé).
- recherche d’un ticket en 2 étapes :
a) Balayage en parallèle des mémoires de PC du cluster (par exemple une centaine de Go de mémoire par une trentaine de PC) pour déterminer l’indicatif du fichier contenant le ticket,
b) chargement du fichier en mémoire, puis balayage pour en extraire le ticket recherché.- possibilité d’analyser la totalité de éléments stockés dans le puits de donnés.
Attention, la puissance de calcul peut-être très élevée s’il y a une vingtaine de processeurs qui travaillent en parallèle, mais les possibilités de corrélation entre tickets sont limitées.




Exemple N°3 puits de données stockés dans un seul serveur équipé d’une grappe de disques :
- même type de stockage des tickets regroupés par paquets sur un des disques du serveur mais on utilise une arborescence de fichiers correspondant aux 80 millions de No de téléphone utilisés en France, de sorte que :
a) la première étape de la recherche ne se fait plus par balayage d’une immense table en mémoire, mais par lecture d’un fichier de cette grande arborescence,
b) la deuxième chargement du fichier en mémoire, puis balayage pour en extraire le ticket recherché.- le temps de recherche est encore plus rapide, mais on perd les possibilités offertes par l’utilisation d’une trentaine de processeurs pour analyser les données.




Exemple N°4 puits de données stockés par No de client dans un seul serveur équipé d’une grappe de disques (cf tickets pour la grande distribution );
- Autre type de stockage des tickets mais dans cette configuration, les tickets sont triés par No de client, ce qui permet d’analyser le profil de chaque client (Data + text) .
- On contourne la difficulté de modifier des milliers (voire plus) de fichiers à la seconde par un traitement dans la mémoire (plusieurs Go) au niveau du serveur.




Atouts et Faiblesses comparés aux autres technologies


Outil universel ou boîte à outils Open Source ?
Le principal reproche fait à la technologie Baobab est de ne pas pouvoir traiter tous les types de requêtes SQL l’instar des SGBDR.
Il est difficile d’avoir les avantages de la simplicité sans en avoir les inconvénients ;
Toutefois des architectures mixtes (exemple No 5 Varchar) permettent de contourner le problème dans beaucoup de cas.
Les solutions type Netezza (pour le Data-Mining) illustrent parfaitement le domaine où la techno Baobab n’a aucun intérêt.






Configuration hardware requise
Un des principaux atouts de la base de données Baobab tient au fait qu’elle est parallélisable, et que l’on obtient la puissance (et la sécurité) par simple ajout de modules peu coûteux, ce qui est la démarche de tous les laboratoires de recherche qui veulent obtenir des puissances de calcul 100, 1.000 fois supérieures aux derniers Cray et autres machines d’une époque révolue.









  • Avec un SGBDR,
    - les performances dépendent largement de la vitesse. des processeurs, de la mémoire,. des disques qui sont soumis à un usage intensif en raison de l’atomisation des données,
    - l’intégrité des pointeurs est une nécessité absolue, ce qui implique l’emploi de serveurs ayant un MTBF très élevé.
    Cela se traduit par l’emploi
    - de processeurs 64 bits, si possible dual-core,
    - de mémoire Ecc,
    - de disques SCSI à 15.000 tours de relativement faible capacité (comparés aux disques SATA) avec des configurations RAID,
    - des alimentations importantes, etc.




  • Avec la base de données Baobab :
    - En ce qui concerne les disques, leur longévité dépend de 2 facteurs :
    . la fréquence et l’amplitude des déplacements de la tête de lecture,
    . et de la fréquence des phases d’écriture.
    Si on prend l’exemple du puits de données décrit ci-après (tickets avec un seul serveur),
    . pendant la journée il n’y a pratiquement qu’un déplacement de tête par requête,
    . et la nuit le seul usage intensif consiste à écrire une partie du disque avec des déplacements piste à piste.
    Par ailleurs, les temps d’accès, (11ms de temps moyen) ou les vitesses de transfert (600 secondes pour écrire 1 million de fichiers de 128 Mb), ils suffisent pour obtenir des performances élevées, et leur sollicitation comparable à un usage bureautique.
    - pour ce qui est des performances elles dépendent surtout de la vitesse de transfert de la mémoire vers le processeur (à cause du cache du microprocesseur, et de l’effet pipe-line, le processeur est peu sollicité dans les phases de balayage – si les algorithmes sont performants).

    En conséquence, pourvu que l’on reste dans le domaine dans lequel la techno Baobab est performante, les avantages sur le pla Hardware sont les suivants :

    Performances :Pour un facteur (Vitesse x Capacité) donné, l’investissement en infrastructure (matériel, environnement, maintenance, …) est le plus souvent 10 fois moins élevé (voire plus).
    Sécurité, Possibilité de redémarrage à chaud : Grâce à des architectures redondantes, et à la possibilité de dupliquer les configurations pour un faible coût, la fiabilité obtenue, et la disponibilité du système valent bien celles des systèmes les plus onéreux.




Aspects Logiciel - Multi-Tache, gestion des accès concurrents, droits d’accès, sécurité logiciel

Les SGBDR ont pour inconvénients d’avoir des performances médiocres, et donc coûteuses, si comme on le constate trop souvent, elles sont mises en œuvre par des techniciens peu compétents ou insuffisamment formés, par contre les routines de bas niveau des SGBDR assurent un fonctionnement parfait sur les points cités ci-dessus.
Dans le cas de la techno Baobab, c’est à l’architecte de mettre en place les dispositifs requis.
Toutefois, l’usage d’un environnement tel que ACE (multi-threading, cloisonnement des données, couches protocole encapsulées dans l’outil, …) ainsi que la programmation objet en C++ constitue un cadre particulièrement rigoureux.
Par ailleurs, pour des applications du type puits de données qui ne font qu’accumuler des mouvements, le problème de la gestion des accès concurrents peut être assuré par un mécanisme simple dûment documenté dans les exemples ;
Pour les cas plus complexes comme pour le système d’enquête évoqué plus haut un SGBDR peut superviser le système assurer la cohérence de l’information dans un (ou plusieurs clusters de serveurs monté en parallèle pour obtenir des temps de réponse très courts.
Pour les droits d’accès aux différents éléments d’information (et le cryptage qui peut l’accompagner), une bibliothèque fournie par Baobab rend aisée la mise en œuvre de ces techniques.


Modules de la Boite à outils


- Module d’interrogation structuré et texte libre simple au niveau d’un article, du type :
if ( date_operation <>