26.3.2024

Enterprise vlastnosti Archivácie v SCADA a MES systémoch, časť 2

V tomto pokračovaní článku "Enterprise vlastnosti archivácie v SCADA a MES systémoch" sa budeme zaoberať dlhodobou archiváciou a podporou paralelizmov.

Dlhodobá archivácia (trezory)

Doteraz sme vždy pri konfigurácii archívnych objektov uvažovali, že ich historické dáta sa uchovávajú iba konfiguračne definovaný čas (mesiac, rok, 5 rokov..). Prax si vyžiadala zavedenie aj “neobmedzenej” archivácie a to ešte v dobe, keď boli disky malé a drahé. Ako riešiť takýto rozpor?

Autori D2000 Archívu implementovali vlastnosť, ktorú nazvali trezorovanie. Archív so zapnutým trezorovaním ukladá dáta do štandardnej archívnej databázy a paralelne aj do tzv. trezoru, pričom trezorovanie sa dá konfiguračne povoliť alebo zakázať na každom archívnom objekte. Trezor sa po vytvorení napĺňa definovaný čas (spravidla mesiac, ale môže to byť aj týždeň alebo 10 dní) a následne sa odpojí a začne sa napĺňať nový trezor. Po naplnení je možné trezor odkopírovať preč, prípadne napáliť na CD a vložiť do reálneho trezoru, ako sa to robilo u prvého zákazníka s touto funkčnosťou - odtiaľ vznikol aj názov. Staré trezory je možné znovu pripojiť a sprístupniť dáta na čítanie.

Trezory boli pôvodne podporené na platforme Sybase SQL Anywhere (ako samostatné databázy), neskôr na platforme Oracle (ako tabuľkové priestory) a PostgreSQL (opäť ako samostatné databázy).

V súčasnosti vďaka veľkým diskom nemusia byť naplnené trezory odpojené, ale ostávajú dostupné na čítanie. V prípade zaplnenia diskov s trezormi sa staršie presúvajú napr. na NAS disky (pomalšie ale lacnejšie), takže užívatelia majú k dispozícii celú požadovanú hĺbku dát.

 

3_pgsql_trezory.png
Obr 3: NAS disk s trezormi pre dve D2000 aplikácie s cca. 50 a 100 mesiacmi dát. Na disku je zapnutá NTFS kompresia, vďaka ktorej cca 5.82 TB trezorov zaberá 1.75 TB miesta.

D2000 Archív umožňuje po naplnení trezoru spustiť užívateľsky definovaný príkaz – tento sa používa na odzálohovanie trezoru napr. na nezávislé sieťové úložisko pre prípad zlyhania diskov s trezormi.

Pri redundantných archívoch sa často používa asymetrická konfigurácia, v ktorej iba jedna inštancia archívu trezoruje. D2000 umožňuje nastaviť inštanciu s trezormi ako tzv. preferovanú – pokiaľ je táto k dispozícii, bude aktívna a užívatelia majú k dispozícii dlhodobé dáta.

4_sysconsole_trezory.png
Obr 4: začiatok a koniec výpisu trezorov – aplikácia má 114 mesačných trezorov od decembra 2007, všetky sú pripojené na čítanie, do trezoru č. 114 sa zapisujú aktuálne dáta

Ďalšie tri “enterprise” vlastností sa týkajú využitia viacerých jadier (paralelizácia) a veľkého množstva pamäte (cachovanie), ktoré majú súčasné servery k dispozícii. Ich implementácia prebiehala od r. 2006 až po súčasnosť.

Paralelné čítanie z archívu

D2000 Archív umožňuje nakonfigurovanie až 10 čítacích taskov, ktoré paralelne obsluhujú požiadavky klientov. Pokiaľ niektorý klient požaduje dáta za väčší časový interval, ktorých načítanie z archívu a trezorov môže trvať aj niekoľko minút, tak ostatné tasky môžu paralelne spracúvať požiadavky iných klientov - z ich pohľadu sa teda archív “nezasekne” na niekoľko minút, ale poskytuje dáta (aj keď možno pomalšie kvôli záťaži na SQL server a disky).

Paralelný zápis do archívu

Paralelizácia zápisu dokáže na viacjadrových serveroch výrazne zvýšiť priepustnosť zápisov. D2000 Archív podporuje až 16 zapisovacích taskov (v prípade potreby pre ešte náročnejšie aplikácie ho stačí prekompilovať so zvýšením definičnej konštanty).

Paralelizácia zápisov bola oveľa komplikovanejšia ako paralelizácia čítania – súvisí to s závislosťami medzi archívnymi objektami ako aj “session isolation level” vlastnosťami SQL databáz. Závislosť medzi archívnymi objektami vyžaduje, aby sa prepočty vypočítaných a štatistických archívov vykonávali vo vhodnom poradí (hoci sú vykonávané taskami s rôznou záťažou).  Problém so “session isolation level” súvisí s tým, že Oracle ani PostgreSQL neumožňujú, aby jedno spojenie na databázu videlo dáta,ktoré iné spojenie ešte necommitovalo. Preto je nutné implementovať v archíve malú cache zdieľanú všetkými taskami, ktorá obsahuje necommitované dáta a zabezpečuje, že výpočet má k dispozícii dáta zdrojových archívov, hoci mohli byť tieto dáta vložené do databázy iným taskom, ktorý ešte nevykonal commit.

Okrem paralelných zapisovacích taskov je ešte možné nakonfigurovať jeden “calc” task realizujúci zápisy a prepočty hodnôt starších ako konfigurovateľná medza. Zmysel tohto tasku je, aby príchod starých hodnôt, ktorý môže spôsobiť výraznú aktivitu archívu, nezahltil zapisovacie tasky, ale aby sa staré hodnoty (a vyvolané následné prepočty) pomalšie spracovali na pomocnom “calc” tasku.

5_sysconsole_tasky.png
Obr 5: diagnostický výpis zobrazujúci nakonfigurované 4 zapisujúce tasky a ich aktuálne zaťaženie (počty predkompilovaných kurzorov a požiadaviek vo frontách)

Na pokračovanie článku s popisom ďalších "enterprise" vlastností sa môžete tešiť zase o týždeň ..

 

17.7.2017, Ing. Peter Humaj, www.ipesoft.com

Iné blogy