Systém D2000 definuje pojem štruktúra ako určitý počet pomenovaných položiek, ktorým je možné špecifikovať vlastnosti ako typ hodnoty, štartovaciu hodnotu, ukladanie štartovacej hodnoty, limity. Štruktúra je v systéme definovaná objektom typu Definícia štruktúry, má teda priradené určité meno. Definícia štruktúry (nie je nositeľom hodnoty) predstavuje určitú šablónu, ktorá sa používa (formou referencie) pri definícii ďalších objektov typu:
...
Objekt typu Štruktúrovaná premenná je úzko zviazaný s objektom Definícia štruktúry. Definuje nenulový počet riadkov hodnôt. Každý riadok má štruktúru danú objektom Definícia štruktúry. Týmto vzniká matica hodnôt:
Príklad:
Objekt SD.OsobaDef typu Definícia štruktúry má nasledovné položky:
Názov položky | Typ položky |
---|---|
Meno | Text |
Vek | Celočíselný |
Narodeny | Absolútny čas |
Deti | Celočíselný |
Nech objekt SV.Osoby je typu Štruktúrovaná premenná a má päť (5) riadkov. Nech je riadok tohto objektu definovaný objektom SD.OsobaDef. Hodnota objektu je zložená z dvadsiatich (20) hodnôt [5 x 4] rôznych typov, ktorých usporiadanie znázorňuje tabuľka:
Riadok/Stĺpec | Meno | Vek | Narodeny | Deti |
---|---|---|---|---|
1 |
2 |
3 |
4 |
5 |
Každé políčko predstavuje jednu hodnotu, ktorá má plnohodnotne definované (a zvlášť pre každú hodnotu) všetky vlastnosti bežné v systéme D2000 (štartovacia hodnota, limity, stavové bity atď.). Jednotlivé hodnoty je možné zobrazovať v grafických schémach, používať ich vo výrazoch (SV.Osoby[3]^Vek), v počítaných bodoch alebo v eventoch.
...
Tieto vlastnosti sú použité (alebo nepoužité podľa konfigurácie) pre stĺpce v objekte typu Štruktúrovaná premenná a Databáza. Pre objekt typu Štruktúrovaná premenná sa tieto vlastnosti dajú konfigurovať pre každé políčko (hodnotu) zvlášť.
* Atribút je pevne a nemenne definovaný na úrovni objektu typu Definícia štruktúry.
Zariadenia
V niektorých prípadoch sa pri používaní štruktúr prejavujú určité nevýhody:
- Možnosť duplicitného pripojenia objektov: pripojenie jedného objektu do viacerých riadkov štruktúrovanej premennej (pre typ hodnoty Objekt)
- Anonymné riadky: jednotlivé riadky štruktúry sú adresované číselným indexom. Pokiaľ patria riadky jednej štruktúrovanej premennej do viacerých skupín (napr. každý riadok zodpovedá jednému generátoru a niekoľko generátorov tvorí blok a niekoľko blokov elektráreň), pri práci s číselnými indexami toto nie je zrejmé a môže dôjsť k omylu
- Pamäťová fragmentácia: štruktúrované premenné sú v systéme D2000 reprezentované ako súvislý blok pamäte. V prípade použitia veľkých štruktúr (desiatky až stovky riadkov a stĺpcov) dochádza k fragmentácii pamäte (najmä v procese D2000 Server)
- Problémy s archiváciou: pri použití štruktúrovaných archívov (archivácia stĺpca alebo prípadne celej štruktúrovanej premennej) dochádza k ukladaniu všetkých hodnôt do jednej databázovej tabuľky, ktorá tak môže byť veľká a jej správa (reorganizácia dát a indexov) náročná na diskové operácie a CPU. Zároveň je takýto štruktúrovaný archívny objekt pridelený jednému zapisovaciemu archívnemu tasku, takže zápisy nemôžu byť paralelizované. Pokiaľ nad takýmto archívnym objektom sú postavené ďalšie (vypočítané a/alebo štatistické archívy), každý z nich je opäť obsluhovaný jedným zapisovacím archívnym taskom. Ak je napr. spustený prepočet archívu tell príkazom RECALC, je serializovaný a vykonávaný postupne pre jednotlivé riadky štruktúrovaného archívu.
Uvedené problémy rieši koncepcia zariadení, ktorú prináša D2000 vo verzii 21. Základom Zariadenia je jednoriadková štruktúrovaná premenná, pričom:
- Pomocou objektu Definícia zariadenia je definovaná štruktúra objektu Zariadenie.
- Definícia zariadenia podporuje všetky typy stĺpcov ako Definícia štruktúry, navyše stĺpce typu Interná položka (slúži na pripojenie iného D2000 objektu do zariadenia) a Zariadenie (slúži na pripojenie iného zariadenia-podzariadenia).
- Definícia zariadenia môže byť alternatívne definovaná ako pole objektov s definovanou Definíciou zariadenia (napr. majme DD.Generator a od neho odvodenú DD.GeneratorArr).
- Je tak možné vystavať "strom" zariadení, pričom proces D2000 Server zabezpečuje konzistentnú mennú konvenciu pre objekty pripojené do položiek zariadenia typu Interná položka a Zariadenie.