OperaMetrix
Bases de données

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

1

É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;
2

É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
3

É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.")
4

É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

Industrie manufacturière et services publics

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.

Pharmaceutique et agroalimentaire

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.

Énergie et traitement de l’eau

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.

PostgreSQL offre le partitionnement natif des tables, une gestion supérieure des grands volumes de données, une indexation avancée (index BRIN pour les séries temporelles) et des extensions comme TimescaleDB conçues spécifiquement pour les charges historien. Il offre également une meilleure conformité ACID et de meilleures performances d’écriture concurrente sous de fortes charges Tag Historian.
Lorsque la connexion PostgreSQL est interrompue, le moteur Store & Forward d’Ignition met automatiquement en cache toutes les données historien dans un tampon local (sur disque). Une fois la connexion rétablie, les enregistrements mis en tampon sont transférés dans l’ordre avec leurs horodatages d’origine, garantissant l’intégrité complète des données sans intervention manuelle.
Une instance PostgreSQL correctement configurée peut gérer des dizaines de milliers de tags historisés avec des taux d’échantillonnage inférieurs à la seconde. Avec le partitionnement de tables et une indexation appropriée, PostgreSQL peut stocker des milliards de points de données tout en maintenant des temps de réponse inférieurs à 100 ms pour les requêtes historien typiques.
Oui. PostgreSQL s’intègre entièrement avec le module Reporting d’Ignition pour les rapports PDF/CSV planifiés, et avec Perspective pour les tableaux de bord en temps réel. Utilisez les requêtes nommées pour récupérer les données historien de manière sécurisée, et le binding Tag History dans Perspective pour afficher les tendances directement depuis le fournisseur historien PostgreSQL.

Prêt à démarrer ?

Contactez notre équipe pour discuter de vos besoins et obtenir une solution sur mesure.