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
- Pas de trace proche trouvée, alors on insère la nouvelle trace
- Une trace trouvée avant, alors on modifie la date de fin de celle-ci
- Une trace trouvée après, alors on modifie la date de début de celle-ci
- 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
- chercher les traces "proches" dans la table de disponibilité. On a alors 4 cas de figures possibles
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
- Oui :
- Chercher s'il existe cette époque en base (NSLC + start + end)
- 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