Stockage et persistance

L'une des clefs du projet Boardz2 est d'assurer une efficacité maximum du stockage persistant de données afin que l'accès aux statistiques et indicateurs soit rapide et que l'ensemble des données disponibles puissent être relues après un redémarrage de l'instance de serveur ou de l'infrastructure qui la porte.

Pour cela, Boardz2 implémente un ensemble de classes propres à la fonction de stockage, dont le rôle est d'organiser TOUTES les transactions avec les stockages extérieurs de données (bases de données ou fichiers).

Conceptuellement, un stockage est une classe qui :

organise le stockage de données

négocie avec des organes extérieurs la conservation des données et leur identification

fournit une API de récupération des données

optimise le modèle de stockage pour assurer un accès rapide aux données

Le plus souvent (ex. MysqlDatabase), un stockage s'appuiera sur une implémentation tierces comme par exemple une base de données dont il tirera des principes propres à respecter sa mission. Par exemple, la performance d'accès à des données relationnelles sera en fait assurée par l'indexation sous-jacente de la base de données tierces.

Dans certains cas plus complexes (MoodleCube), un stockage peut présenter une organisation propre à produire ses propres optimisations par son organisation interne, tout en continuant à confier à des implémentations tierces des fonctions de stockage de plus bas niveau.

Instances remarquables de stockage

La base de données Boardz (BoardzMysqlDatabase)

Cette instance de stockage est unique (singleton) et sert au stockage en base de données de toutes les données de structure du serveur BoardZ. Tous les objets administrable du serveur y sont décrit et mémorisés, avec leur relations les uns aux autres, afin de pouvoir redémarrer un service “à l'identique” après un arrêt machine.

Les entités principalement décrites sont :

Les stockages (hormis la base de données BoardZ elle-même qui est décrite dans une configuration statique)

Les objets d'alimentation (flux) et de transformation de données (data processing)

Les objets d'interface (panneaux, widgets et fonctions de rendu d'interface)

Les objets produisant un comportement dynamique du serveur (tâches de clacul, triggers d'évenements etc).

Le cube Moodle

Ce stockage à structure complexe organise une structure multidimensionnelle optimisée pour la consultation d'indicateurs et la construction de tableaux de bords. La structure de ce stockage optimise la mise en cache de sommes calculées intermédiaires sur les dimensions partielles, afin de ne pas avoir à recalculer les indicateurs à partir des données d'origine (les logs, par exemple).

Le cube Moodle dispose de deux ensembles de tables :

Le Cube direct, destiné à compiler par agrégats temporels des événements simples provenant d'une extraction (feeder). Les événements de base sont comptés (en nombre, en temps, ou selon une autre grandeur caractéristique) sur des intervalles temporels précalculés (jour, semaine, mois, année).

Le cube calculé, destiné à servir de cache général pour des agrégations “aux dimensions partielles” sur des sous-espaces de données définis par la configuration de certaines mesures.

Retour à la documentation de conception - Retour à l'index général