Skip to content

Mise à jour de la base availability à la volée

Le rafraichissement de la table availability commence à être assez pénalisant, c'est une opération de 30 minutes, toutes les 4 heures. Et les utilisateurs sont pas content car ils ne savent jamais si c'est à jour.

Le WS availability pourrait avoir sa base de données indépendante de seedtree.

  • Un worker pourrait la mettre à jour en continu pour les données validées
  • Un cronjob pourrait la mettre à jour quotidiennement pour les données brutes de la veille

La mise à jour doit gérer la possibilité de fusionner des traces, mais rien de très compliqué a priori :

Pour un fichier de données:

  • Récupérer ses caractéristiques (Net, Sta, Loc, Chan, Quality)
  • Récupérer la liste des traces dans ce fichier et fusionner éventuellement les traces suffisamment proches
  • Pour chaque trace après fusion :
    • chercher les traces "proches" dans la table de disponibilité. On a alors 4 cas de figures possibles
      1. Pas de trace proche trouvée, alors on insère la nouvelle trace
      2. Une trace trouvée avant, alors on modifie la date de fin de celle-ci
      3. Une trace trouvée après, alors on modifie la date de début de celle-ci
      4. Une trace trouvée avant et une après, alors on crée une nouvelle trace représentant la fusion des 3 et on supprime les 2 anciennes

Attention, un tel système suppose qu'on configure un gap minimal qui ne pourra plus être réduit.

Pour un fichier de métadonnées:

  • Pour chaque époque de la métadonnée (epoch_meta dans la list_epoch_meta)
    • Chercher s'il existe cette époque en base (NSLC + start + end)
      • Oui :
        • on met à jour son restrictedSatus si nécessaire
        • on met à jour le paramètre updated_at de epoque_base
        • on retire epoch_meta de la list_epoch_meta
  • Supprimer de la base toutes époque du NSLC n'ayant pas été mise à jour et détacher les traces liées
  • Pour chaque époque de list_epoh_meta:
    • Créer la nouvelle époque en base
    • Chercher les traces concernées et les rattacher à la nouvelle époque
Edited by Jonathan Schaeffer