Popis struktury přenosové dávky

XML formát

XML formát přenosové dávky lze popsat následujícím DTD schématem:

<!ENTITY %NAME "Name NMTOKEN #REQUIRED">

<!ELEMENT waknst(nstheader, nstdata, nstdeletedinfo)>

<!ELEMENT nstheader(datdavky, emailuzlu?, gdavky, gtypupren, naztypupren, guzlu, nazuzlu, popisdavky?, nazdb, verdb, pubkeyuzlu?)>  Hlavička přenosové dávky

<!ELEMENT datdavky (#PCDATA)>                       Datum dávky

<!ELEMENT emailuzlu (#PCDATA)>                       Adresa odesílatele

<!ELEMENT gdavky (#PCDATA)>                          GUID dávky

<!ELEMENT gtypupren (#PCDATA)>                      Typ přenosu (viz dále)

<!ELEMENT naztypupren (#PCDATA)>                   Název přenosu

<!ELEMENT guzlu (#PCDATA)>                             GUID uzlu odesílatele

<!ELEMENT nazuzlu (#PCDATA)>                          Název uzlu odesílatele

<!ELEMENT popisdavky (#PCDATA)>                   Popis dávky

<!ELEMENT nazdb (#PCDATA)>                            Název databáze (Kis)

<!ELEMENT verdb (#PCDATA)>                            Verze databáze

<!ELEMENT pubkeyuzlu (#PCDATA)>                    Veřejný RSA klíč odesílatele zakódovaný BASE64

<!ELEMENT nstdata(Table+)>                                              Data jednotlivých tabulek

<!ELEMENT Table(Row+)>                                     Tabulka

<!ATTLIST Name %NAME;>                                  Jméno tabulky

<!ELEMENT Row(n.., g.., nUzlu, w_datupd, ...)>      Záznam tabulky

<!ELEMENT n..(#PCDATA)>                      Primární klíč záznamu

<!ELEMENT g..(#PCDATA)>                      GUID záznamu

<!ELEMENT nUzlu(#PCDATA)>                 Primární klíč uzlu, který pořídil záznam

<!ELEMENT w_datupd(#PCDATA)>           Datum poslední modifikace

<!ELEMENT nstdeletedinfo (Table+)>                                   GUID smazaných záznamů v jednotlivých tabulkách

<!ELEMENT Table(g+)>                                           Tabulka

<!ATTLIST Name %NAME;>                                  Jméno tabulky

<!ELEMENT g (#PCDATA)>                                   GUID záznamu

 

Přenosový soubor má tedy tři části a to sice hlavičku, přenášená data a seznam GUID smazaných záznamů.

Hodnoty tagů gtypupren a naztypupren v hlavičce jsou následující:

 

Uživatelské označení

gtypupren

naztypupren

Export databáze

CB75631A-01D0-4E06-9C0E-7DD1514F0ADD

Celá databáze systému KIS

Export navštívenky

D3E0F56B-3F9A-45E8-A19E-F964DB41AF78

Přenos údajů o vlastním uzlu

Export podle dokumentu nebo kapitoly krizového plánu

14270BCC-21C7-4941-B72F-10819C11D2E7

Dokument KP nebo kapitola KP systému KIS

 

Popis dávky není povinný, stejně jako není povinný veřejný RSA klíč uzlu, pokud se nevyužívá elektronický podpis.

Přenášená data obsahují tagy Table se jmény tabulek. Každá tabulka obsahuje tagy Row s daty jednotlivých záznamů. Každý záznam je popsán tagy, odpovídající jeho polím. Z hlediska technologie NST jsou významná čtyři pole, která jsou obsažena v každé tabulce:

 

Označení pole

Název pole

n...(n + jméno tabulky, např. nOrg)

primární klíč záznamu

g...(g + jméno tabulky, např. gOrg)

GUID záznamu

nUzlu

Identifikátor uzlu

w_datupd

Datum poslední modifikace záznamu

 

NST formát

Technologie NST umožňuje dva formáty přenosové dávky a to sice XML a NST. Formát NST je XML formát opatřený hlavičkou a komprimovaným obsahem. Formát souboru NST je popsán v následující kapitole.

Dále uvedená tabulka představuje popis významu jednotlivých bytů v souboru typu NST:

 

Adresa

Délka

Popis

0H

2H

Délka hlavičky v bytech

2H

3H

Identifikátor NST

5H

1H

Číslo verze

6H

1H

Číslo subverze

7H

4H

Typ přenosu – v NST vždy 00 00 00 00

0BH

4H

Alg. komprese

00 00 00 00 bez komprese

01 00 00 00 gzip

0FH

4H

Alg. šifrování

00 00 00 00 bez šifrování

01 00 00 00 rijndael

13H

4H

Alg. podpisu

00 00 00 00 bez podpisu

01 00 00 00 RSA

17H

400H

Klíč pro dešifrování obsahu šifrovaný algoritmem RSA

417H

80H

Elektronický podpis obsahu

497H

 

Kopie hlavičky přenosové dávky (tag nstheader)

497H

25H

GUID dávky

4BC

25H

GUID uzlu odesílatele

4E1H

25H

GUID typu přenosu

506H

FBH

Název typu přenosu

601H

FBH

Název uzlu

6FCH

FBH

E-mail uzlu

7F7H

15H

Datum dávky

80CH

100H

Popis dávky

90CH

51H

Název databáze

95DH

51H

Verze databáze

9AEH

100H

Veřejný klíč uzlu odesílatele

AAEH

 

Data přenosové dávky (XML soubor), dle volby komprimovaný a šifrovaný

Jedinečná identifikace záznamů

GUID

Pro jednoznačnou identifikaci záznamu je použit tzv. identifikátor GUID (Globally Unique Identifier), který je možné generovat například pomocí systémové funkce v operačních systémech MS Windows. Identifikátor je generován dle algoritmu specifikovaného OSF DCE, 3. Identifikátor je generován na základě aktuálního času, čítače volání funkce a jednoznačného identifikátoru daného hardwarovou konfigurací počítače. Má formát 32-ti místného čísla doplněného čtyřmi oddělovacími znaky na 36-ti znakový řetězec a s dostatečnou pravděpodobností se lze spolehnout na to, že nebudou nikdy generovány dva shodné identifikátory.

Referenční integrita

Pro zajištění referenční integrity jsou záznamy v tabulkách opatřeny primárním klíčem, což je automaticky generované 32 bitové číslo. Zatímco GUID záznamu se nemění po celou dobu existence záznamu, při zajištění referenční integrity se záznamy v jiných tabulkách může být primární klíč v databázi různých uzlů různý. Toto řešení dovoluje replikaci dat mezi uzly, aniž by docházelo ke konfliktům v primárních klíčích záznamů.

V databázi existuje tabulka uzlů, obsahující GUID všech uzlů. Primární klíč záznamů v této tabulce je obsažen ve všech tabulkách databáze a identifikuje uzel vlastníka záznamu, který jediný ho smí modifikovat a mazat. Dále tato tabulka obsahuje veřejné RSA klíče uzlů pro elektronický podpis přenosových dávek.