Skip to content

Modèle de données & cache

Structure du DataModel Heva One, exécution orchestrée et politique de cache Redis.

Le DataModel est un graphe orienté composé de trois types de nœuds :

  • Query : extraction depuis une source (SQL, GraphQL, API custom).
  • Transform : traitement JSONata ou fonction custom, combinant éventuellement plusieurs nœuds.
  • DataView : projection finalisée consommée par l’UI.

Chaque nœud déclare explicitement ses entrées, sorties et filtres associés, garantissant la cohérence du graphe et facilitant les tests automatisés.

  • Format : YAML ou JSON, modélisable dans une interface React Flow au sein du Studio.
  • Contrats : schémas Zod générés à partir de la configuration (objectif cible).
  • Datasource binding : effectué au runtime pour permettre le re-binding (ex. changer l’année de référence sans modifier la définition).
  • Transformations : possibilité d’agréger plusieurs sources, de pivoters les données ou d’appliquer des calculs statistiques.
  • Service central stateless : pilote l’exécution du graphe, s’appuie sur un pool de connexions multi-tenant.
  • API type : GET /api/app/{appId}/datamodel/{modelId}/query/{queryId}?filters=year:2024,country:USA.
  • Validation : contrôle du data shape pour chaque nœud avant diffusion au runtime UI.
  • Pre-aggregations : piste exploratoire pour réduire les temps de réponse sur des cas lourds.
  • Heva Insights : exploite les DataViews pour alimenter les panels et chartes, avec une forte dépendance aux filtres temps/région.
  • Heva Impact (prévu) : réutilisera le DataModel pour injecter les paramètres de simulation et restituer les résultats calculés par le moteur Impact.

En construction : stratégie d’auto-génération des schémas Zod et toolkit de tests unitaires des nœuds.

  • Backend : Redis partagé, clés composées de tenant:app:version:node:filtres.
  • Portée : nœuds intermédiaires (Transforms) et DataViews finales.
  • TTL : ajusté selon la criticité du nœud (ex. DataViews courtes, agrégations longues).
  • Invalidation : basée sur le TTL ; mécanismes événementiels à affiner.
  • Sensibilité : options de chiffrement en transit/au repos et de namespaces dédiés.
  • Versionnage : chaque nœud suit son historique, permettant de comparer deux versions.
  • Revue : validation conjointe Data/Engineering avant publication.
  • Tests : datasets de référence pour rejouer les queries et vérifier les transformations.

En construction : guide de migration des DataModels et support des évolutions incrémentales (diffs, merge assisté).