boards:design:resultsandtracks

Mesure, indicateur, indicateur vectoriel, pistes temporelles

BoardZ Version 2

Ce chapitre est probablement au coeur du projet. En effet, les choix de l'architecture de stockage et de définition des indicateurs sera décisif dans la tenue en performance, mais aussi dans la maniabilité et la flexibilité du service. Dans la performance car des structures de données particulièrement adaptée à l'usage principal qui en est fait permettent d'obtenir des gains algorithmiques conséquents. Dans la maniabilité, car les choix des métadonnées de contexte permettront de faciliter les requêtes sectorielles et l'extraction d'un contexte particulier des données de base.

Les postulats de départ

Le postulat de départ du moteur de stockage statistique est un principe très classique d'application 3 tiers.

Les données utile statistiques sont des séries de données représentant des indicateurs requêtables. L'ensemble des données est stocké de manière statique dans un stockage persistant (fichiers ou base de données). Une partie des données réside en mémoire vive pour servir les besoins de requêtes sur des restitutions d'indicateurs ou de tableau de bord.

Les règles de maintien des données en mémoire suivent les stratégies courantes des caches de données, à savoir, la conservation prioritaire des données récemment consultées.

D'autre part, une grande partie des données aura un comportement “temporel”, c'est-à-dire, pour la même mesure, la capacité à être observée dans le temps. Là encore, la stratégie de maintien en mémoire doit tenir compte de cette caractéristique particulière et instituer des mécanismes de “chargement par segment”. C'est-à-dire, que toutes les valeurs historiques d'un indicateur ne seront pas toujours disponible en mémoire, mais uniquement des segments chargés de cet historique. (Par analogie voir comment des segments de vidéo sont présents dans un tampon de visionnage d'un player vidéo dans un navigateur). Une requête sur un segment temporel devra donc d'abord s'assurer de la disponibilité de toutes les données disponibles du segment en mémoire avant d'y lancer un parcours ou un calcul.

Les objectifs de la modélisation

  • Assurer un stockage persistant en mémoire des données les plus récemment ou souvent utilisées.
  • Optimiser des calculs d'agrégat sur des données temporisées
  • Proposer une méthode d'administration des contextes cohérente avec l'organisation de moodle, mais tenant aussi compte des usages “métiers” qui sont faits de cette organisation.

Principe transverse : le Résultat

Un Résultat est une donnée ou une structure de données produite par une source ou transformée à partir d'un autre élément du système. Le résultat contient des données qui traversent le système, mais également les métadonnées qui permettent d'en connaitre la nature et la structure.

Les données peuvent être différentes en “nombre” et en “structure”. Dans le cas le plus simple, il s'agira d'une donnée scalaire, un simple nombre exprimant une grandeur. Mais les conditions d'obtention des données peuvent amener des résultats qui portent un certain nombre de valeurs (en général, la donnée la plus fine d'un résultat sera toujours un nombre). Les multiples valeurs portées par un résultat peuvent être arrangées de manière différentes. On convient dans Boardz que si une donnée n'est pas unique, alors elle est présentée “indexée” dans une ou plusieurs dimensions. Les résultats manipulés par Boardz sont donc :

  • Arité 0 : un scalaire
  • Arité 1 : une table associative indexée sur une dimension (une valeur d'index par donnée scalaire)
  • Arité 2 : une matrice associative indexée sur 2 dimensions
  • Arité > 2 : il s'agit d'une généralisation de la matrice organisant les données sur X dimensions avec X niveaux d'indices (cubes hypercubes etc.)

Les résultats peuvent être combinés arithmétiquement et logiquement entre eux. Ces combinaisons doivent assurer la production d'une valeur plausible de sortie, quelle que soit l'arité des opérandes qui sont combinés. Bien entendu lorsque plusieurs solutions ont possibles, le choix algorithmique qui décide de certains résultats d'opérateurs est principalement guidé par le besoin “pratique” et les questions “métier” qui seront posées à BoardZ.

Détail de l'implémentation des résultats et de ses opérations

Mesure

On parle de mesure lorsque une grandeur numérique représentant la caractéristique d'un système peut être photographiée à des instants distincts du temps. Une mesure est en général issu d'une sonde ou d'un instrument qui capte et quantifie le paramètre physique qui fournit la grandeur.

Les caractéristiques d'une mesure sont :

  • Elle rend compte d'une propriété quantifiable (contrairement à une qualification ou à un jugement de valeur).
  • La propriété mesurée doit être clairement exprimable et son contexte de validité ou de pertinence doit être également exprimé.
  • Elle doit être issue d'une opération répétable, c'est-à-dire que, reprise dans exactement les mêmes conditions, elle doit fournir la même valeur.

Indicateurs

Un indicateur correspond à une donnée calculée, issue d'une mesure directe, ou obtenue par une équation de calcul à partir de mesures directes. Par équation, on désignera principalement un procédé calculant en mémoire des opérations sur des données issues de mesures ou d'autres indicateurs pris comme résultats intermédiaires.

Indicateur vectoriel

Un indicateur vectoriel utilise la même formule de calcul, mais en filtrant des données sources selon un contexte qui permet un calcul partiel sur une seule modalité du contexte. L'ensemble des modalités fournit les ordonnées du vecteur de sortie. Chaque modalité étant associée à une valeur partielle de l'indicateur.

Exemple: si l'indicateur est désigné par “La fréquence d'accès par mois”, alors on peut définir un indicateur vectoriel sur la dimension “cours” et obtenir le vecteur des “fréquences d'accès par mois dans chaque cours”

Suivant la dimension propre de l'ordonnée, l'indicateur deviendra alors matriciel, ou multi-dimensionnel au dessus d'une dimension 2 des ordonnées. (arité 1)

Indicateur temporel

La dimension temporelle a un fonctionnement particulier. D'une part elle s'aggrège sur des échelles non homogènes du fait de l'organisation du découpage calendaire. D'autre part, la nature des requêtes effectuées sur une dimension temporelle est majoritairement des requêtes sur des “intervalles” qui produit des résultats uniquement valables sur l'intervalle et toujours issus d'une fonction d'agrégation sur l'intervalle (telle que somme, max, moyenne, min etc.).


Revenir au sommaire de la conception - Revenir au sommaire général

boards/design/resultsandtracks.txt · Dernière modification: 2020/04/07 11:07 (modification externe)