Bonjour,
je dispose de nombreux automates mesurant des capteurs. Je voudrais enregistrer toutes les données de capteurs dans une base données et je suis bloqué sur la meilleure conception à réaliser.
Actuellement:
Création d'une table avec la définition des capteurs (identifiant unique, type de variable à enregistrer, nom) (plusieurs centaines)
Création de X tables (une par capteur) où je stocke les données Timestamp + valeur de chaque capteur
/!\ A chaque lecture des données sur l'automate, je vérifie que celle de la base de données n'est pas la même (l'automate ne met pas à jour la donnée tant qu'elle n'a pas changé et donc le timestamp liée à la données non plus)
=> réduction de la taille de la basse de donnée.
Exemple: une donnée d'un état peut rester de nombreuses heures/jours à la même valeur => l'idée est de ne pas enregistrer 96 fois la même valeur par jour (si les données sont vérifiées chaque 15 minutes mais parfois c'est toutes les minutes et on passerait à 1440 enregistrements alors qu'en pratique un seul par jour suffit voire moins)
Le "problème" de cette technique est qu'à chaque lecture de d'une valeur de l'automate, je dois faire une lecture de la table du capteur correspondant pour voir quelle est la dernière valeur enregistrée , la comparer et l'enregistrer si c'est pertinent
En alternative, je m'étais dit que je pourrais changer mon schéma par
Création d'une table avec la définition des capteurs (identifiant unique, type de variable à enregistrer, nom)
Création d'une table où je stocke les données Timestamp + valeur de chaque capteur + identifiant de chaque capteur (avec timestamp + identifiant du capteur en key)
=> je pourrais créer une requête join sur les deux tables qui m'indique pour chaque capteur la dernière valeur pour chaque capteur => moins appel à des tables mais une requête de base plus longue pour sortir ce tableau.
Le problème c'est que je ne sais pas si lorsque j'aurais des milliers d'enregistrements ce sera pertinent ou non de faire cette requête join
Auriez vous des suggestions/ commentaires / remarques pour optimiser cela?
Merci








Répondre avec citation













Partager