Aller au contenu principal

MyEMS Documentation de conception de la base de données

À l'usage des développeurs : architecture, structure des tables et philosophie de MyEMS.

Sommaire​


Conception de l'Architecture de la Base de Données​

Philosophie de Conception​

  1. Séparation des Données : Séparer les données dans différentes bases de données selon leur type et leur utilisation pour éviter qu'une base unique ne devienne trop volumineuse.
  2. Séparation Lecture/Écriture : Les données historiques utilisent un stockage de séries temporelles pour supporter des requêtes efficaces.
  3. Extensibilité Horizontale : Les grandes bases de données (historical_db, energy_db) peuvent être étendues indépendamment.
  4. Normalisation Unifiée : Toutes les bases de données utilisent le même jeu de caractères et les mêmes règles de classement.

Configuration de la Base de Données​

Toutes les bases de données utilisent la configuration uniforme suivante :

  • Jeu de caractères : utf8mb4 (Prend en charge l'ensemble des caractères UTF-8, y compris les émojis)
  • Collation : utf8mb4_unicode_ci (Règles de tri Unicode)
  • Moteur de Stockage : InnoDB (Par défaut, prend en charge les transactions et les clés étrangères)

Conventions de Nommage​

  • Nommage des Bases de Données : myems_{fonctionnalité}_db (minuscules, séparés par des underscores)
  • Nommage des Tables : tbl_{nom_entité} (minuscules, séparés par des underscores)
  • Nommage des Champs : minuscules, séparés par des underscores, par exemple start_datetime_utc
  • Nommage des Index : tbl_{nom_table}_index_{numéro}

Description Détaillée des Bases de Données​

1. myems_system_db (Base de Données de Configuration du Système)​

Usage : Stocke la configuration de base et les métadonnées du système. C'est la base de données centrale de configuration pour l'ensemble du système.

Caractéristiques :

  • Contient le plus grand nombre de tables (environ 150+)
  • Volume de données relativement faible, mais structure complexe
  • Contient de nombreuses tables de relations

Catégories Principales de Tables :

1.1 Tables de Configuration de Base​

Nom de la TableDescriptionChamps Clés
tbl_energy_categoriesCatégories d'énergie (électricité, eau, gaz, froid, chaleur, etc.)id, name, unit_of_measure, kgce, kgco2e
tbl_energy_itemsPostes de consommation d'énergie (éclairage, climatisation, puissance, etc.)id, name, energy_category_id
tbl_cost_centersCentres de coûtid, name, external_id
tbl_data_sourcesConfiguration des sources de donnéesid, name, gateway_id, protocol, connection
tbl_protocolsConfiguration des protocolesid, name, protocol_type

1.2 Tables de Gestion des Équipements​

Nom de la TableDescriptionChamps Clés
tbl_equipmentsInformations sur les équipementsid, name, uuid, equipment_type_id, cost_center_id
tbl_combined_equipmentsÉquipements combinés (combinaison de plusieurs équipements)id, name, is_input_counted, is_output_counted
tbl_metersInformations sur les compteursid, name, uuid, energy_category_id, is_counted
tbl_offline_metersCompteurs hors ligne (saisie manuelle)id, name, energy_category_id
tbl_virtual_metersCompteurs virtuels (calculés)id, name, expression (format JSON)
tbl_pointsInformations sur les points de donnéesid, name, data_source_id, object_type, object_id

1.3 Tables d'Organisation Spatiale​

Nom de la TableDescriptionChamps Clés
tbl_spacesInformations spatiales (pièces, étages, etc.)id, name, uuid, parent_space_id, area
tbl_storesInformations sur les magasinsid, name, uuid, space_id
tbl_tenantsInformations sur les locatairesid, name, uuid, space_id
tbl_shopfloorsInformations sur les ateliersid, name, uuid, space_id

1.4 Tables de Relations​

Le système utilise de nombreuses tables d'association pour établir des relations plusieurs-à-plusieurs :

  • tbl_equipments_meters: Association équipement-compteur
  • tbl_equipments_offline_meters: Association équipement-compteur hors ligne
  • tbl_equipments_virtual_meters: Association équipement-compteur virtuel
  • tbl_spaces_equipments: Association espace-équipement
  • tbl_spaces_meters: Association espace-compteur
  • tbl_combined_equipments_equipments: Association équipement combiné-équipement
  • etc...

1.5 Tables des Équipements d'Énergies Nouvelles​

Nom de la TableDescriptionChamps Clés
tbl_photovoltaic_power_stationsCentrales photovoltaïquesid, name, capacity, contact_id
tbl_energy_storage_containersConteneurs de stockage d'énergieid, name, rated_capacity, rated_power
tbl_energy_storage_power_stationsCentrales de stockage d'énergieid, name, rated_capacity
tbl_microgridsMicro-réseauxid, name, address
tbl_charging_stationsStations de rechargeid, name, rated_capacity, rated_power

1.6 Tables de Contrôle et de Planification​

Nom de la TableDescriptionChamps Clés
tbl_commandsCommandes de contrôleid, name, topic, payload (format JSON)
tbl_control_modesModes de contrôleid, name, is_active
tbl_control_modes_timesPériodes de mode de contrôleid, control_mode_id, start_time_of_day, end_time_of_day

1.7 Autres Tables de Configuration​

  • tbl_contacts: Informations de contact
  • tbl_distribution_systems: Systèmes de distribution
  • tbl_distribution_circuits: Circuits de distribution
  • tbl_energy_flow_diagrams: Diagrammes de flux d'énergie
  • tbl_tariffs: Configuration des tarifs
  • tbl_working_calendars: Calendriers de travail
  • tbl_web_messages: Messages Web

Considérations pour le Développement :

  • Toutes les tables ont un id (BIGINT AUTO_INCREMENT) comme clé primaire.
  • La plupart des tables ont un champ uuid (CHAR(36)) pour l'intégration avec des systèmes externes.
  • Les tables d'association n'ont généralement que id et deux champs de clé étrangère.
  • Les champs JSON utilisent le type LONGTEXT, stockant des chaînes JSON formatées.

2. myems_historical_db (Base de données historique)​

Usage : stocke les données temps-réel et l’historique ; c’est l’une des bases les plus volumineuses du système.

Caractéristiques :

  • Volume très important, stockage en séries temporelles
  • Tables de valeurs brutes et tables « latest » pour accès rapide
  • Marqueurs de qualité (is_bad, is_published)

Structure principale :

TableDescriptionChamps clésStratégie d’index
tbl_analog_valueHistorique analogiquepoint_id, utc_date_time, actual_value, is_bad, is_published(point_id, utc_date_time), (utc_date_time)
tbl_analog_value_latestDernière valeur analogique (cache)point_id, utc_date_time, actual_value(point_id, utc_date_time)
tbl_digital_valueHistorique digitalpoint_id, utc_date_time, actual_value (INT)(point_id, utc_date_time), (utc_date_time)
tbl_digital_value_latestDernière valeur digitalpoint_id, utc_date_time, actual_value(point_id, utc_date_time)
tbl_energy_valueHistorique énergétiquepoint_id, utc_date_time, actual_value, is_bad, is_published(point_id, utc_date_time), (utc_date_time)
tbl_energy_value_latestDernière valeur énergétiquepoint_id, utc_date_time, actual_value(point_id, utc_date_time)
tbl_text_valueHistorique textepoint_id, utc_date_time, actual_value (LONGTEXT)(point_id, utc_date_time), (utc_date_time)
tbl_text_value_latestDernière valeur textepoint_id, utc_date_time, actual_value(point_id, utc_date_time)

Tables de fichiers :

TableDescriptionChamps clés
tbl_cost_filesFichiers de coût (Excel/CSV)file_name, uuid, upload_datetime_utc, status, file_object (LONGBLOB)
tbl_offline_meter_filesFichiers compteurs hors-lignefile_name, uuid, upload_datetime_utc, status, file_object
tbl_data_repair_filesFichiers de réparation de donnéesfile_name, uuid, upload_datetime_utc, status, file_object
tbl_energy_plan_filesFichiers de plan énergétiquefile_name, uuid, upload_datetime_utc, status, file_object

Types de données :

  • actual_value : DECIMAL(21, 6) – haute précision, 6 décimales
  • utc_date_time : DATETIME – toujours en UTC
  • is_bad : BOOL – True = donnée invalide
  • is_published : BOOL – True = donnée publiée

Notes développement :

  • Toutes les dates sont UTC ; convertir côté front
  • Les tables _latest évitent le scan de l’historique
  • Tables fichier en LONGBLOB – attention à la taille
  • Nettoyage régulier pour préserver les perfs

3. myems_energy_db (Base de données énergie)​

Usage : agrège les consommations par heure, jour, mois, année pour tous les équipements.

Caractéristiques :

  • Données calculées par le service myems-aggregation
  • Granularités : hourly, daily, monthly, yearly
  • Stats par catégorie énergétique et par poste

Règle de nommage : tbl_{type}_{flux}_{cat/item}_{granularité}
type : meter, equipment, combined_equipment, space, store, tenant, shopfloor
flux : input / output
granularité : hourly, daily, monthly, yearly

3.1 Consommation des compteurs​

TableDescriptionChamps clés
tbl_meter_hourlyConso horaire compteurmeter_id, start_datetime_utc, actual_value
tbl_meter_dailyConso journalièremeter_id, start_datetime_utc, actual_value
tbl_meter_monthlyConso mensuellemeter_id, start_datetime_utc, actual_value
tbl_meter_yearlyConso annuellemeter_id, start_datetime_utc, actual_value
tbl_offline_meter_hourlyConso horaire compteur hors-ligneoffline_meter_id, start_datetime_utc, actual_value
tbl_virtual_meter_hourlyConso horaire compteur virtuelvirtual_meter_id, start_datetime_utc, actual_value

3.2 Consommation des équipements​

TableDescriptionChamps clés
tbl_equipment_input_category_hourlyEntrée équip. par catégorieequipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_equipment_input_item_hourlyEntrée équip. par posteequipment_id, energy_item_id, start_datetime_utc, actual_value
tbl_equipment_output_category_hourlySortie équip. par catégorieequipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_combined_equipment_input_category_hourlyEntrée équip. combinécombined_equipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_combined_equipment_output_category_hourlySortie équip. combinécombined_equipment_id, energy_category_id, start_datetime_utc, actual_value

3.3 Consommation des espaces​

TableDescriptionChamps clés
tbl_space_input_category_hourlyEntrée espace par catégoriespace_id, energy_category_id, start_datetime_utc, actual_value
tbl_space_input_item_hourlyEntrée espace par poste space_id, energy_item_id, start_datetime_utc, actual_value
tbl_space_output_category_hourlyEntrée espace par postespace_id, energy_category_id, start_datetime_utc, actual_value
tbl_store_input_category_hourlyEntrée magasinstore_id, energy_category_id, start_datetime_utc, actual_value
tbl_tenant_input_category_hourlyEntrée tenanttenant_id, energy_category_id, start_datetime_utc, actual_value
tbl_shopfloor_input_category_hourlyEntrée ateliershopfloor_id, energy_category_id, start_datetime_utc, actual_value

3.4 Énergies renouvelables & stockage​

TableDescriptionChamps clés
tbl_photovoltaic_power_station_hourlyProd. horaire PVphotovoltaic_power_station_id, start_datetime_utc, actual_value
tbl_energy_storage_container_charge_hourlyCharge batterieenergy_storage_container_id, start_datetime_utc, actual_value
tbl_energy_storage_container_discharge_hourlyDécharge batterieenergy_storage_container_id, start_datetime_utc, actual_value
tbl_energy_storage_container_grid_buy_hourlyAchat réseauenergy_storage_container_id, start_datetime_utc, actual_value
tbl_energy_storage_container_grid_sell_hourlyVente réseauenergy_storage_container_id, start_datetime_utc, actual_value
tbl_microgrid_charge_hourlyCharge micro-réseaumicrogrid_id, start_datetime_utc, actual_value
tbl_microgrid_discharge_hourlyDécharge micro-réseaumicrogrid_id, start_datetime_utc, actual_value

Index : Index composite : (objet_id, catégorie_id, start_datetime_utc) ou (objet_id, start_datetime_utc)

Notes développement :

  • start_datetime_utc = début de la période (ex. 00:00:00 pour 00-01h)
  • actual_value = valeur agrégée, non brute
  • Données calculées périodiquement, pas en temps réel
  • Gestion des fuseaux horaires côté requête

4. myems_billing_db (Base de Données de Facturation)​

Usage : Stocke les données de consommation d'énergie liées à la facturation. Structure similaire à myems_energy_db, mais les données sont calculées avec les tarifs appliqués.

Caractéristiques :

  • Structure de table identique à myems_energy_db
  • Les données sont calculées par le service myems-aggregation en fonction de la configuration des tarifs
  • Prend en charge des règles de facturation complexes telles que les tarifs temporels, les tarifs progressifs, etc.

Tables Principales :

  • Structure de table identique à myems_energy_db
  • Les valeurs des données sont multipliées par le tarif correspondant, l'unité est généralement monétaire (par exemple, Yuan, Dollar)

Considérations pour le Développement :

  • Les données de facturation dépendent de la configuration des tarifs dans myems_system_db.tbl_tariffs
  • Nécessite une association avec le centre de coût (cost_center)
  • Prend en charge plusieurs stratégies tarifaires (temporelle, progressive, de capacité, etc.)

5. myems_carbon_db (Base de Données des Émissions de Carbone)​

Usage : Stocke les données de consommation d'énergie liées aux émissions de carbone, utilisées pour le calcul de l'empreinte carbone.

Caractéristiques :

  • Structure de table identique à myems_energy_db
  • Les données sont calculées par le service myems-aggregation en fonction des facteurs d'émission de carbone
  • Les facteurs d'émission de carbone sont stockés dans myems_system_db.tbl_energy_categories.kgco2e

Tables Principales :

  • Structure de table identique à myems_energy_db
  • Les valeurs des données sont multipliées par le facteur d'émission de carbone, l'unité est généralement le kgCO2e (kilogramme d'équivalent CO2)

Considérations pour le Développement :

  • Les facteurs d'émission de carbone peuvent varier dans le temps, nécessitant la prise en charge des facteurs historiques
  • Les facteurs d'émission diffèrent selon le type d'énergie (électricité, gaz, pétrole, etc.)
  • Prend en charge le calcul des émissions de carbone de scope 1, scope 2 et scope 3

6. myems_energy_baseline_db (Base de Données de Référence Énergétique)​

Usage : Stocke les données de référence de consommation d'énergie, utilisées pour l'analyse des économies d'énergie et l'évaluation de l'efficacité énergétique.

Caractéristiques :

  • Structure de table similaire à myems_energy_db
  • Les données de référence sont généralement calculées sur la base de données historiques ou de valeurs standard
  • Utilisées pour comparer la consommation réelle à la consommation de référence et calculer les économies d'énergie

Tables Principales :

  • Structure de table identique à myems_energy_db
  • Stocke les valeurs de référence plutôt que les valeurs réelles

Considérations pour le Développement :

  • Les données de référence doivent être mises à jour régulièrement
  • Prend en charge plusieurs méthodes de calcul de référence (moyenne historique, analyse de régression, valeur standard, etc.)

7. myems_energy_model_db (Base de Données du Modèle Énergétique)​

Usage : Stocke les données du modèle de consommation énergétique annuel sur 8760 heures (nombre d'heures dans une année).

Caractéristiques :

  • Stocke 8760 enregistrements par objet (données horaires pour une année)
  • Utilisé pour la prévision et la planification de la consommation d'énergie
  • Les noms des tables contiennent le suffixe _8760

Tables Principales :

Nom de la TableDescriptionChamps Clés
tbl_meter_8760Modèle 8760h du compteurmeter_id, start_datetime_utc, actual_value
tbl_equipment_input_category_8760Modèle de consommation d'énergie en entrée de l'équipementequipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_combined_equipment_input_category_8760Modèle de consommation d'énergie en entrée de l'équipement combinécombined_equipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_space_input_category_8760Modèle de consommation d'énergie en entrée de l'espacespace_id, energy_category_id, start_datetime_utc, actual_value
tbl_shopfloor_input_category_8760Modèle de consommation d'énergie en entrée de l'ateliershopfloor_id, energy_category_id, start_datetime_utc, actual_value
tbl_store_input_category_8760Modèle de consommation d'énergie en entrée du magasinstore_id, energy_category_id, start_datetime_utc, actual_value
tbl_tenant_input_category_8760Modèle de consommation d'énergie en entrée du locatairetenant_id, energy_category_id, start_datetime_utc, actual_value

Considérations pour le Développement :

  • Le modèle 8760h est généralement généré à partir de données historiques ou de modèles standard
  • Utilisé pour la prévision de la consommation annuelle et l'établissement du budget
  • Permet la visualisation par semaine, mois, trimestre, etc.

8. myems_energy_plan_db (Base de Données du Plan Énergétique)​

Usage : Stocke les données du plan et des objectifs de consommation d'énergie.

Caractéristiques :

  • Structure de table similaire à myems_energy_db
  • Stocke les valeurs planifiées plutôt que les valeurs réelles
  • Utilisé pour le budget énergétique et la gestion des objectifs

Tables Principales :

  • Structure de table identique à myems_energy_db
  • Les données proviennent de fichiers de plan ou de saisies manuelles

Considérations pour le Développement :

  • Les données planifiées doivent être comparées et analysées avec les données réelles
  • Prend en charge la planification multi-niveaux (annuelle, mensuelle, hebdomadaire, etc.)

9. myems_energy_prediction_db (Base de Données de Prédiction Énergétique)​

Usage : Stocke les données de prévision de consommation d'énergie.

Caractéristiques :

  • Structure de table similaire à myems_energy_db
  • Stocke les valeurs prédites plutôt que les valeurs réelles
  • Utilisé pour la prévision et l'alerte sur la consommation d'énergie

Tables Principales :

  • Structure de table identique à myems_energy_db
  • Les données sont générées par des algorithmes de prédiction

Considérations pour le Développement :

  • Les données de prédiction doivent être mises à jour régulièrement
  • Prend en charge plusieurs algorithmes de prédiction (séries temporelles, apprentissage automatique, etc.)
  • La précision des prévisions doit être optimisée en continu

10. myems_fdd_db (Base de Données de Détection et de Diagnostic de Défauts - FDD)​

Usage : Stocke les données liées à la détection et au diagnostic de défauts.

Caractéristiques :

  • Prend en charge plusieurs canaux d'alerte (Web, Email, SMS, WeChat, Appel téléphonique)
  • Le moteur de règles prend en charge une logique complexe de détection de défauts
  • Prend en charge l'acquittement et le traitement des messages d'alerte

Structure Principale des Tables :

Nom de la TableDescriptionChamps Clés
tbl_rulesRègles de diagnosticid, name, category, fdd_code, priority, channel, expression (JSON), message_template, is_enabled
tbl_web_messagesMessages Webid, rule_id, user_id, subject, category, priority, message, status, belong_to_object_type, belong_to_object_id
tbl_email_messagesMessages Emailid, rule_id, recipient_name, recipient_email, subject, message, attachment_file_name, status
tbl_text_messages_outboxBoîte d'envoi des SMSid, rule_id, recipient_mobile, message, status, acknowledge_code
tbl_text_messages_inboxBoîte de réception des SMSid, sender_mobile, message, status
tbl_wechat_messages_outboxBoîte d'envoi des messages WeChatid, rule_id, recipient_openid, message_template_id, message_data (JSON)
tbl_wechat_messages_inboxBoîte de réception des messages WeChatid, sender_openid, message, status
tbl_email_serversConfiguration du serveur de messagerieid, host, port, requires_authentication, user_name, password, from_addr
tbl_wechat_configsConfiguration WeChatid, api_server, app_id, app_secret, access_token, expires_datetime_utc

Catégories de Règles (category) :

  • REALTIME : Alerte en temps réel
  • SYSTEM : Alerte système
  • SPACE : Alerte spatiale
  • METER : Alerte de compteur
  • TENANT : Alerte de locataire
  • STORE : Alerte de magasin
  • SHOPFLOOR : Alerte d'atelier
  • EQUIPMENT : Alerte d'équipement
  • COMBINEDEQUIPMENT : Alerte d'équipement combiné

Priorités (priority) :

  • CRITICAL : Critique
  • HIGH : Élevée
  • MEDIUM : Moyenne
  • LOW : Faible

Considérations pour le Développement :

  • Le champ expression stocke l'expression de la règle au format JSON
  • message_template prend en charge le remplacement de variables (comme $name, $value)
  • Les règles prennent en charge l'exécution planifiée et immédiate
  • Statut du message : new → sent → acknowledged / timeout

11. myems_user_db (Base utilisateurs)​

Usage : authentification, clés API, messages e-mail, etc.

Caractéristiques :

  • Faible volume, haute sécurité
  • Gestion des droits utilisateurs
  • Authentification par clé API

Structure principale :

TableDescriptionChamps clés
tbl_usersUtilisateursid, name, uuid, display_name, email, salt, password, is_admin, is_read_only, privilege_id, account_expiration_datetime_utc, password_expiration_datetime_utc, failed_login_count
tbl_privilegesPrivilègesid, name, data (JSON)
tbl_sessionsSessionsid, user_uuid, token, utc_expires
tbl_api_keysClés APIid, name, token, created_datetime_utc, expires_datetime_utc
tbl_email_messagesE-mailsid, recipient_name, recipient_email, subject, message, attachment_file_name, status, scheduled_datetime_utc
tbl_email_message_sessionsSessions e-mailid, recipient_email, token, expires_datetime_utc
tbl_logsJournal d’auditid, user_uuid, request_datetime_utc, request_method, resource_type, resource_id, request_body (JSON)
tbl_notificationsNotificationsid, user_id, created_datetime_utc, status, subject, message, url
tbl_new_usersNouveaux comptes (attente activation)id, name, uuid, display_name, email, salt, password
tbl_verification_codesCodes de vérificationid, recipient_email, verification_code, created_datetime_utc, expires_datetime_utc

Sécurité :

  • Mots de passe : salt + hash, jamais en clair
  • Dates d’expiration compte & mot de passe
  • Limite de tentatives de connexion
  • Clés API avec date d’expiration

Notes développement :

  • Ne jamais lire le champ password en clair
  • Nettoyer régulièrement les tokens expirés
  • Conserver tous les logs pour audit
  • Cycle notification : unread → read → archived

12. myems_reporting_db (Base rapports)​

Usage : stockage des messages e-mail et pièces jointes liés aux rapports.

Caractéristiques :

  • Faible volume
  • Modèles et fichiers générés conservés

Structure principale :

TableDescriptionChamps clés
tbl_reportsConfiguration rapportid, name, uuid, expression (JSON), is_enabled, last_run_datetime_utc, next_run_datetime_utc, is_run_immediately
tbl_reports_filesFichiers générésid, uuid, create_datetime_utc, file_name, file_type (xlsx/pdf/docx), file_object (LONGBLOB)
tbl_template_filesModèlesid, uuid, report_id, file_name, file_type, file_object
tbl_email_messagesMessages e-mailid, recipient_name, recipient_email, subject, message, attachment_file_name, attachment_file_object, status

Notes développement :

  • Formats supportés : Excel, PDF, Word
  • Modèles utilisés pour génération
  • Génération planifiée ou immédiate
  • LONGBLOB – surveiller la taille

13. myems_production_db (Base production)​

Usage : données de production (produits, équipes, shifts…).

Caractéristiques :

  • Faible volume
  • Analyses d’efficacité énergétique par produit

Structure principale :

TableDescriptionChamps clés
tbl_productsProduitsid, name, uuid, unit_of_measure, tag, standard_product_coefficient
tbl_teamsÉquipesid, name, uuid, description
tbl_shiftsShiftsid, shopfloor_id, team_id, product_id, product_count, start_datetime_utc, end_datetime_utc, reference_timestamp
tbl_shopfloor_hourlyProduction atelier (horaire)id, shopfloor_id, start_datetime_utc, product_id, product_count
tbl_space_hourlyProduction espace (horaire)id, space_id, start_datetime_utc, product_id, product_count
tbl_shopfloors_productsLien atelier-produitid, shopfloor_id, product_id
tbl_shopfloors_teamsLien atelier-équipeid, shopfloor_id, team_id

Notes développement :

  • Calcul consommation spécifique par produit
  • Statistiques par produit, équipe, atelier
  • Corrélation avec les données énergétiques pour indicateurs d’efficacité

Relations de Flux de Données​

Processus d'Acquisition des Données​

Équipements/Capteurs
↓ (Modbus TCP/MQTT/HTTP)
myems-modbus-tcp (Service d'acquisition de données)
↓ (Écriture)
myems_historical_db.tbl_analog_value / tbl_digital_value / tbl_energy_value
↓ (Normalisation des données)
myems-normalization (Service de normalisation des données)
↓ (Nettoyage des données)
myems-cleaning (Service de nettoyage des données)
↓ (Agrégation des données)
myems-aggregation (Service d'agrégation des données)
↓ (Écriture)
myems_energy_db (Données de consommation d'énergie)
myems_billing_db (Données de facturation)
myems_carbon_db (Données d'émissions de carbone)

Processus de Requête des Données​

Requête Utilisateur
↓
myems-api (Service API)
↓ (Requête)
myems_system_db (Données de configuration)
myems_historical_db (Données historiques)
myems_energy_db (Données de consommation d'énergie)
↓ (Retour)
myems-web / myems-admin (Affichage frontal)

Relations des Données​

myems_system_db.tbl_points
↓ (point_id)
myems_historical_db.tbl_analog_value
↓ (Calcul d'agrégation)
myems_energy_db.tbl_meter_hourly
↓ (Relation)
myems_system_db.tbl_meters
↓ (Relation)
myems_system_db.tbl_equipments
↓ (Relation)
myems_system_db.tbl_spaces

Normes de Conception de la Structure des Tables​

Champs Universels​

Toutes les tables incluent les champs universels suivants :

Nom du ChampTypeDescription
idBIGINT NOT NULL AUTO_INCREMENTClé primaire, auto-incrémentée
nameVARCHAR(255)Nom
uuidCHAR(36)UUID, pour l'intégration avec des systèmes externes
descriptionVARCHAR(255)Description (optionnelle)

Champs Temporels​

Nom du ChampTypeDescription
utc_date_timeDATETIMEHeure UTC (tables de données historiques)
start_datetime_utcDATETIMEHeure de début de la période (tables de données agrégées)
created_datetime_utcDATETIMEHeure de création
updated_datetime_utcDATETIMEHeure de mise à jour
last_run_datetime_utcDATETIMEHeure de la dernière exécution
next_run_datetime_utcDATETIMEHeure de la prochaine exécution

Remarque : Tous les champs temporels utilisent uniformément l'heure UTC. La conversion vers l'heure locale est effectuée par l'interface frontale pour l'affichage.

Champs Numériques​

Nom du ChampTypeDescription
actual_valueDECIMAL(21, 6)Valeur réelle, supporte une haute précision (6 décimales)
set_valueDECIMAL(21, 6)Valeur de consigne
rated_capacityDECIMAL(21, 6)Capacité nominale
rated_powerDECIMAL(21, 6)Puissance nominale

Champs JSON​

Nom du ChampTypeDescription
connectionLONGTEXTConfiguration de connexion (format JSON)
expressionLONGTEXTExpression (format JSON)
payloadLONGTEXTCharge utile (format JSON)
dataLONGTEXTDonnées (format JSON)

Remarque : Les champs JSON stockent des chaînes JSON formatées et doivent être analysés avant utilisation.

Champs d'État​

Nom du ChampTypeDescription
is_enabledBOOLEst activé
is_activeBOOLEst actif
is_badBOOLEst une donnée erronée
is_publishedBOOLEst publié
is_countedBOOLEst comptabilisé dans les statistiques
statusVARCHAR(32)Statut (ex: new, sent, done, error)

Conception des Index​

Index Primaire :

  • Toutes les tables ont une PRIMARY KEY (id)

Index Unique :

  • Les champs clés (comme name, uuid) ont généralement un index unique

Index Composite :

  • Les combinaisons de champs fréquemment interrogées utilisent un index composite
  • Ex: (point_id, utc_date_time), (meter_id, start_datetime_utc)

Index Temporel :

  • Les champs temporels sont généralement indexés séparément pour supporter les requêtes par plage de temps