boardz:journal14102019

JOURNAL DE BORD au 14 Octobre 2019

BoardZ Version 2

Bienvenue dans le volume de documentation de conception de BoardZ Version 2.

Circuit d'alimentation du BoardZ

Test des premières alimentations

  • Circuit : Moodle ⇒ report_etl ⇒ sous plugin (etl_boardz) | Moodle ⇒ Boardz | script cli runfeeds.php ⇒ boardz\feeder\MoodleEtlFeeder ⇒ boardz\data_storage\MoodleCube(s)
  • Plugin d'ETL : Extrait de manière différentielle (timetracking) une expression renseignée des logs en XML (flux).

Génériques :

  • Un principe générique de Feeder : une classe capable de recevoir un flux de données et d'y appliquer des filtres et des parseurs de données.
  • Un principe générique de filtre (boardz\feeder\Filter) : Il applique une condition à chaque échantillon, l'accepte ou le rejette en fonction.
  • Un principe générique de parseur (boardz\feeder\Parser) : Il cherche une donnée précise dans un échantillon et va la pousser dans un stockage de données adéquat.
  • Une boucle de lancement de tous les Feeders déclarés d'un serveur BoardZ (script console).

Spécifiques :

  • Une classe MoodleCube : Elle définit le cube de données moodle et pilote la distribution des échantillons vers des agrégateurs quotidiens (daily), hebdomadaires (weekly), mensuels (monthly) ou annuels (yearly) – Nous reprenons en ce sens l'esprit des tables standard de statistiques de moodle, mais beaucoup plus complètes sur la qualification des dimensions et des métadonnées de contexte de validité de la valeur.
  • Une classe MoodleETLFeeder : Elle reçoit un flux provenant d'un plugin report_etl/etl_boardz associé au site traité et applique le comportement général du Feeder.
  • Une classe MoodleDefaultLogParser : Elle applique un traitement “standard” de comptage des occurrences de log dans chaque domaine de valeur individuel du cube.
  • Des premiers exemples de filtres : Comme celui qui élimine tous les enregistrements “cli” du log moodle, ou celui qui élimine toutes les arrivées sur le compte “admin”.Le principe du filtre est de pouvoir rapidement et facilement modifier et adapter le filtrage du flux pour ne pas polluer le stockage avec des données non intéressantes.

Ce qui fonctionne : Aujourd'hui les données arrivent dans le cube.

Ce qui doit être fait :

  • Vérifier que le principe agrégatif sur les périodes de référence (jour, semaine, mois, année) fonctionne effectivement. La valeur d'indicateur doit augmenter si on ajoute des échantillons dans la même dimension du cube et sur la même période de référence.
  • Commencer à forger les extensions de calcul : à partir du cube “brut”, nous devons pouvoir stocker des indicateurs “dérivés” dont les premiers sont le précalcul d'une dimension partielle. Ces calculs partiels sont stockés dans un autre jeu de tables modélisant le “cube calculé sur moodle”. Il est de structure identique au cube initial.

Explications :

Le cube de base reçoit par exemple un comptage des entrées de message de forum pour une dimension précise (cours, contexte, utilisateur, période de référence, etc). Sur la même période de référence, si l'on veut avoir le comptage de la même valeur (action) cours par cours pour tous les utilisateurs, nous stockerons un résultat calculé du cube avec des dimensions “utilisateur = 0” ( et toutes les métadonnées directement découlantes de l'utilisateur également annulées), toutes les autres dimensions restant égales par ailleurs.

Comme il est impensable de pré-calculer toutes les combinaisons d'agrégation partielle croisant toutes les dimensions possibles, les calculs partiels réellement calculés devront être définis et configurés explicitement par la configuration.

L'ensemble des calculs “secondaires” sur le cube brut est une tache de fond du serveur Boardz qui doit venir traiter régulièrement l'actualisation des données de base. Nous devons encore réfléchir pour savoir si il s'agit d'une boucle de calcul séparée, indépendante et traitée en asynchrone par rapport à la réception des flux (cette idée me plait plus, mais posera quelques problèmes de coordination des accès aux données) ou doit être faite dans le même processus que la réception du flux.


Sommaire du journal - Revenir au sommaire général

boardz/journal14102019.txt · Dernière modification: 2020/04/07 11:07 (modification externe)