Base de données historien open-source évolutive
Historien PostgreSQL pour Ignition : Stockage de données d’entreprise
Déployez PostgreSQL comme base de données historien haute performance pour Ignition SCADA. Exploitez Tag Historian, la fiabilité du Store & Forward et le partitionnement de tables pour un stockage de données à long terme évolutif à travers votre infrastructure industrielle.
Présentation
PostgreSQL est le choix idéal d’historien PostgreSQL pour Ignition dans les environnements industriels nécessitant un stockage de données robuste et open-source. Ses fonctionnalités avancées comme le partitionnement natif, le support JSON et l’indexation puissante en font un candidat de premier plan pour les données Tag Historian, les journaux d’alarmes et les logs d’audit à l’échelle de l’entreprise.
Combiné avec le moteur Store & Forward d’Ignition, PostgreSQL garantit zéro perte de données même lors d’interruptions réseau. Les requêtes nommées offrent une interface sécurisée et performante pour le reporting personnalisé, tandis que les extensions TimescaleDB peuvent optimiser davantage les charges de travail de séries temporelles.
Avantages clés
- Open-source avec une fiabilité de niveau entreprise
- Partitionnement natif des tables pour des milliards de lignes
- Store & Forward garantit zéro perte de données
- Requêtes nommées pour un accès SQL sécurisé et mis en cache
- Extension TimescaleDB pour l’optimisation des séries temporelles
Architecture de l’historien PostgreSQL
Les données circulent depuis les tags Ignition à travers le moteur Store & Forward vers PostgreSQL, où elles sont disponibles pour le reporting et l’analytique avancée.
+-----------------+ +----------------------+ +----------------+ +----------------------+
| Ignition Tags | --> | Store & Forward | --> | PostgreSQL | --> | Reporting / |
| (OPC, MQTT, | | Engine | | Historian DB | | Analytics |
| Device Tags) | | (buffering & retry) | | (partitioned) | | (Grafana, Perspective|
+-----------------+ +----------------------+ +----------------+ | Reports, BI tools) |
+----------------------+Étapes de configuration
Étape 1 : Créer la base de données historien PostgreSQL
Créez une base de données PostgreSQL dédiée et un utilisateur pour les données historien d’Ignition. Cela isole le stockage historien des autres données applicatives et permet un contrôle d’accès granulaire.
-- Connect to PostgreSQL as superuser
CREATE DATABASE ignition_historian;
-- Create a dedicated user for Ignition
CREATE USER ignition_user WITH PASSWORD 'secure_password_here';
-- Grant privileges
GRANT ALL PRIVILEGES ON DATABASE ignition_historian TO ignition_user;
-- Connect to the new database
\c ignition_historian
-- Grant schema privileges
GRANT ALL ON SCHEMA public TO ignition_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL ON TABLES TO ignition_user;Étape 2 : Ajouter la connexion à la base de données dans le Gateway Ignition
Configurez la connexion JDBC dans le Gateway Ignition. Accédez à Config > Bases de données > Connexions et ajoutez une nouvelle connexion PostgreSQL en utilisant le driver JDBC org.postgresql.Driver.
# Ignition Gateway connection settings
# Navigate to: Config > Databases > Connections > Create new connection
Name: PostgreSQL_Historian
Description: Historian database for tag history and alarms
JDBC Driver: org.postgresql.Driver
JDBC URL: jdbc:postgresql://db-server:5432/ignition_historian
Username: ignition_user
Password: ********
# Connection pooling (recommended settings)
Max Active: 20
Max Idle: 10
Min Idle: 5
Validation Query: SELECT 1Étape 3 : Configurer le Tag Historian pour utiliser PostgreSQL
Créez un fournisseur d’historique de tags pointant vers la connexion PostgreSQL, puis activez l’historique sur vos tags. Utilisez system.tag.configure dans un script gateway ou l’éditeur de tags du Designer pour configurer les propriétés de l’historien.
# Python script to enable Tag Historian on existing tags
# Run in the Script Console or as a Gateway Event Script
# Define tag configuration with historian enabled
tag_config = {
"name": "Temperature_Reactor_01",
"tagType": "AtomicTag",
"dataType": "Float8",
"historyEnabled": True,
"historyProvider": "PostgreSQL_Historian",
"historySampleRate": 10000, # 10 seconds
"historyMaxAge": 365, # days to retain
"historyMaxAgeUnits": "DAY"
}
# Apply configuration to the tag path
system.tag.configure(
basePath="[default]Plant/Reactor",
tags=[tag_config],
collisionPolicy="o" # overwrite existing
)
print("Tag Historian configured for PostgreSQL.")Étape 4 : Configurer le partitionnement de tables pour la scalabilité
Implémentez le partitionnement natif de PostgreSQL sur les tables historien pour maintenir les performances des requêtes à mesure que le volume de données augmente. Les partitions mensuelles permettent des politiques de rétention efficaces et des requêtes plus rapides sur les données récentes.
-- Create the partitioned historian table
-- (run this BEFORE Ignition creates its default tables,
-- or migrate existing data)
CREATE TABLE sqlt_data_1_2024 PARTITION OF sqlt_data_1
FOR VALUES FROM ('2024-01-01') TO ('2025-01-01')
PARTITION BY RANGE (t_stamp);
-- Create monthly sub-partitions for 2024
CREATE TABLE sqlt_data_1_2024_01 PARTITION OF sqlt_data_1_2024
FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');
CREATE TABLE sqlt_data_1_2024_02 PARTITION OF sqlt_data_1_2024
FOR VALUES FROM ('2024-02-01') TO ('2024-03-01');
-- ... repeat for each month
-- Create indexes on each partition for fast lookups
CREATE INDEX idx_sqlt_data_2024_01_tstamp
ON sqlt_data_1_2024_01 (t_stamp);
CREATE INDEX idx_sqlt_data_2024_01_tagid
ON sqlt_data_1_2024_01 (tagid);
-- Automate partition creation with pg_partman (recommended)
SELECT partman.create_parent('public.sqlt_data_1',
't_stamp', 'native', 'monthly');Fonctionnalités clés
Tag Historian
Collectez et stockez automatiquement les données de séries temporelles des tags Ignition dans PostgreSQL avec des taux d’échantillonnage configurables, un filtrage par bande morte et des politiques de rétention des données.
Store & Forward
Mettez en tampon les données historien localement lorsque la connexion PostgreSQL est indisponible et transférez-les automatiquement une fois la connectivité rétablie, garantissant zéro perte de données.
Requêtes nommées
Exécutez des requêtes SQL paramétrées et précompilées sur PostgreSQL avec mise en cache intégrée, gestion des connexions et prévention des injections SQL pour un reporting sécurisé.
Partitionnement de tables
Exploitez le partitionnement natif par plage de PostgreSQL pour découper les tables historien par période, permettant des requêtes rapides sur les données récentes et un archivage efficace des enregistrements historiques.
Cas d'utilisation
Stockage historien à long terme
Stockez des années de données historiques de tags haute résolution dans PostgreSQL avec des tables partitionnées, des politiques de rétention automatisées et une compression efficace pour un archivage à long terme économique.
Conformité réglementaire et piste d’audit
Maintenez des pistes d’audit infalsifiables et des enregistrements de conformité dans PostgreSQL pour FDA 21 CFR Part 11, ISO 14001 et d’autres cadres réglementaires avec des données historiques immuables et une traçabilité complète.
Analytique avancée avec Grafana
Connectez Grafana directement aux tables historien PostgreSQL pour des tableaux de bord en temps réel, l’analyse de tendances et la détection d’anomalies. Combinez les données SCADA avec les métriques métier dans des visualisations unifiées.
Technologies
PostgreSQL 15+
Base de données relationnelle open-source de niveau entreprise avec partitionnement natif, indexation avancée et conformité ACID pour le stockage historien critique.
Tag Historian
Module intégré d’Ignition pour la collecte automatique de données de séries temporelles depuis les tags, avec taux d’échantillonnage configurables, filtrage par bande morte et fournisseurs de stockage multiples.
Store & Forward
Moteur de mise en tampon d’Ignition qui met en cache les enregistrements historien localement lors de pannes de base de données et les transfère de manière fiable une fois la connectivité rétablie.
pgAdmin
Outil d’administration web pour PostgreSQL offrant la gestion de bases de données, l’exécution de requêtes, les tableaux de bord de surveillance et les opérations de sauvegarde/restauration.
TimescaleDB
Extension PostgreSQL ajoutant le partitionnement automatique, la compression en colonnes et les agrégats continus optimisés pour les données de séries temporelles du Tag Historian d’Ignition.
Questions fréquentes
Retrouvez les réponses aux questions courantes sur cette intégration.
Prêt à démarrer ?
Contactez notre équipe pour discuter de vos besoins et obtenir une solution sur mesure.