January 4, 2022

Databázy v SCADA a MES systémoch

SCADA a MES systémy pracujú s dátami s povahou reálneho času (ale nielen s nimi, ale aj s dátami týkajúcimi sa vlastnej konfigurácie, s externými dátami a pod). Logická požiadavka je dáta niekam ukladať.

Niektoré systémy vyvíjajú vlastné úložiská - textové alebo štruktúrované súbory (XML). Iné sa spoliehajú na štandardné SQL (prípadne NoSQL) databázy. Aké typy databáz používa a ako s nimi zaobchádza aplikačný server reálneho času D2000?

Konfiguračná databáza

Obsahuje konfiguráciu celého systému. Pristupuje k nej jediný proces - D2000 Server. Pri štarte načíta jej obsah do pamäte a vytvorí na jej základe dynamický dátový model (DODM) obsahujúci konfiguráciu všetkých objektov v systéme, vzťahy medzi objektami a ich hodnoty. Následne už do databázy iba zapisuje (jedinou výnimkou je zistenie informácií o histórii objektu, ktoré nie sú udržované v pamäti),takže rýchlosť spracovania informácii v D2000 systéme nie je ovplyvnená rýchlosťou (či pomalosťou :) konfiguračnej databázy.

Zápisy do konfiguračnej databázy vykonáva opäť iba D2000 Server. Dejú sa na základe rôznych udalostí v systéme – spravidla sa jedná o zmenu konfigurácie objektu alebo o zmenu štartovacích hodnôt.

V redundantných systémoch dochádza k zosynchronizovaniu konfiguračnej databázy pri štarte kernela – aktívny D2000 server (HOT) zabezpečí, že konfiguračná databáza štartujúceho D2000 Servera je rovnaká ako jeho.

Konfiguračná databáza má veľkosť typicky v MB až desiatky MB (výnimočne stovky) v závislosti od rozsahu aplikácie. Od verzie 7.2, keď pribudlo logovanie histórie objektov, došlo k nárastu veľkosti konfiguračnej databázy (štandardne sa logujú informácie o posledných 7 zmenách).

Ďalší nárast sa predpokladá, keď konfigurátori začnú používať novú vlastnosť verzie 11 - objekt typu Resource. Tento umožňuje uloženie ľubovoľného súboru alebo adresárovej štruktúry do konfiguračnej databázy a jeho následné aplikačné použitie.

Monitorovacia databáza

Obsahuje záznamy o rôznych udalostiach v systéme D2000. Príkladom sú prihlásenie a odhlásenie užívateľa, zmena hodnoty objektu (ak má zapnuté monitorovanie zmien), spustenie alebo ukončenie procesu, chybové hlásenie od procesu alebo skriptu, vznik alebo zánik alarmu. Monitorovacia databáza má pre každú kategóriu udalostí definovanú časovú hĺbku(v dňoch). Staršie udalosti sú z monitorovacej databázy mazané. Na rozdiel od konfiguračnej databázy sa obsah monitorovacej databázy pri štarte systému nečíta.

Podobne ako pri konfiguračnej databáze, aj k monitorovacej pristupuje iba D2000 Server. Pokiaľ užívateľ alebo skript chce pristupovať k monitorovacej databáze, robí tak dotazom na D2000 server.

Monitorovacia databáza má veľkosť MB až desiatky GB (v závislosti od nakonfigurovanej hĺbky a rozsahu monitorovaných zmien).

Konfiguračná a monitorovacia databáza v systéme D2000 je podporovaná na platformách Microsoft SQL, Sybase SQL Anywhere, Oracle a PostgreSQL. V redundantnom systéme je podporená aj hybridná konfigurácia (každý D2000 Server môže používať inú platformu).

Archívna a trezorové databázy

Archívna databáza slúži na archiváciu real-time dát číselnej povahy. S každou hodnotu sa teda ukladajú časová značka (v systéme D2000 s presnosťou na ms) a rôzne systémové príznaky hodnoty (validita, procesné alarmy, prekročenie limitov, archívne príznaky) a užívateľské príznaky.

Vlastnosti archívu podrobne opisujú viaceré články. Tu z pohľadu databáz uveďme, že podporované sú rovnaké platformy ako pri konfiguračnej a monitorovacej databáze a veľkosti archívov môžu byť v rozsahu od desiatok MB až po desiatky TB (veľké aplikácie so zapnutým trezorovaním).

Archívna databáza môže byť na platformách Sybase SQL Anywhere (v minulosti najrozšírenejšia), Microsoft SQL Server (v minulosti bola najmä voľne dostupná varianta MSDE používaná našimi OEM partnermi), Oracle (v minulosti majoritná platforma pre enterprise nasadenia) a PostgreSQL(aktuálne najrozšírenejšia a preferovaná databáza). Okrem toho sú experimentálne podporené SQLite (pre embedded systémy) a MariaDB.

V jednej aplikácii môže byť niekoľko redundantných archívov, ktoré môžu dokonca používať rôzne databázové platformy. V minulosti bola niekoľkokrát použitá kombinácia Sybase SQL Anywhere + Oracle, dnes sa prevažne jedná o redundantné PostgreSQL archívy. V prípade redundantných archívov zapisuje každý z nich do vlastnej databázy a teda databázy nie sú nijako prepojené.

Pre redundantné archívy existuje mechanizmus (utilita arcsynchro) na zaplátanie „diery“, ktorá vznikla počas vypnutia D2000 Archívu. Utilita arcsynchro dokáže pracovať aj s databázami na rôznych platformách.

 

EDA databáza

EDA (Energetický Dátový Archív) je špeciálny archív s optimalizovanými vlastnosťami a funkciami pre prácu s časovými radmi používaný v energetike. Na rozdiel od D2000 archívu pracuje s vektormi – údajovými štruktúrami, ktoré slúžia pre uchovávanie hodnôt meniacich sa v čase. Vektory môžu byť s konštantným časovým krokom (15 minútový, hodinový, dňový a ich vypočítané varianty)a s nedefinovaným časovým krokom (zmenové, intervalové, popisné a vypočítané).

K EDA databáze pristupuje jeden alebo viacero procesov EDA Server pracujúcich v load-balancing móde. Na rozdiel od D2000 Archívu všetky EDA Servery zdieľajú jednu EDA databázu. Podporená bola pôvodne iba platforma Oracle a kvôli redundancii sa mohli použiť aj Oracle RAC (cluster) a prípadne Hot/Standby technológie ako Dataguard alebo Dbvisit Standby pre Disaster Recovery riešenia. V roku 2020 bola pridaná podpora pre databázu PostgreSQL a EDA na PostgreSQL bola nasadená u niekoľkých zákazníkov (nových alebo migrovaných z Oracle).

Ďalšie rozdiely voči D2000 Archívu:

  • Časové značky vo vektoroch majú sekundovú presnosť – archív má milisekundovú.
  • Vypočítané vektory sa počítajú až pri čítaní (s výnimkou predpočtov, ktoré sa vykonajú na požiadanie a za konkrétny časový interval) – archív počíta podľa konfigurácie priebežne, na požiadanie alebo pri čítaní.
  • Uchováva sa voliteľne aj história vektora, t.j. je možné spätne zistiť hodnoty vektora pred zmenou – archív takúto funkčnosť nemá.
  • Zapisuje sa viacero hodnôt naraz, zápisy sú riadené zo skriptu  - archív zapisuje väčšinou hodnoty objektov D2000 v reálnom čase - tak, ako sa menia, hoci podporuje aj zapisovanie údajov zo skriptu.
  • Podporené sú vypočítané vektory, ktoré môžu pracovať so zdrojovými vektormi s vysokou dynamičnosťou (výber podľa filtra, príslušnosti v skupinách vektorov a iné) – archív ponúka iba vypočítaný archív zo zdrojových objektov definovaných v matematickom výraze (takže väzba medzi zdrojovými archívmi a vypočítaným, prípadne štatistickým archívom, je statická.

Špecialita: EDA Server dokáže pracovať aj s tzv. archívnymi vektormi – dátami, ktoré sú v skutočnosti umiestnené v archívnej databáze. V prípade potreby vykoná čítanie/zápis archívnych dát prostredníctvom D2000 Archívu (časové značky sú v takom prípade zarovnané na sekundy).

Obecná SQL databáza

Proces D2000 DbManager dokáže pracovať s ľubovoľnou ODBC databázou cez ODBC rozhranie (resp. jeho varianta optimalizovaná pre Oracle s ľubovoľnou Oracle databázou cez OCI rozhranie). Obecné SQL databázy sa používajú či už ako rozhrania na externé systémy alebo ako integrovaná súčasť aplikácie na ukladanie dát štruktúrovanej povahy a dát, ktoré nie sú iba čísla. D2000 DbManager dokáže čítať a zapisovať hodnoty (po jednotlivých riadkoch aj po stránkach), vie používať parametrizované SQL príkazy, pracovať s BLOBmi a má rozsiahlu podporu pre škálovanie a zvyšovanie výkonnosti (viacero spojení na databázu, zdieľanie spojení v netransakčnom móde, recyklovanie spojení).

Záver

Aplikačný server reálneho času Ipesoft D2000 sa pri ukladaní údajov spolieha na štandardné SQL databázy. Rôzne D2000 procesy využívajú SQL databázy rôznym spôsobom na poskytovanie rôznych špecializovaných služieb. Flexibilitu Ipesoft D2000 vidieť aj v postupnej podpore pre rôzne SQL databázy. Súčasným trendom je maximalizácia využitia najpokročilejšej open source databázy PostgreSQL a to pre všetky typy databáz – konfiguračné, monitorovacie, archívne, EDA aj obecné databázy. Pritom sú využívané aj vylepšenia, ktoré vývoj PostgreSQL prináša (napr. príkaz UPSERT v D2000 Archíve alebo partitioning v EDA databáze).

Ing.Peter Humaj, www.ipesoft.com

Iné blogy