| |
Allgemeines
| Unter einem DELTA-Transfer im weiteren Sinn werden in der
Query-Language HIT-QL mehrere verschiedene Möglichkeiten zum Abrufen von veränderten
Daten bezeichnet. |
| Aktion RETRIVE mit Subcodes /D /H /M /N |
| Aufsetzen auf dem Zeitpunkt der letzten Übertragung, beachten aller Änderungen,
festgemacht am Timestamp. |
| Mit Speichern des Startzeitpunkts nach erfolgreicher Aktion, so dass beim nächsten
DELTA automatisch dort weitergemacht wird. |
| Durch die optionale Angabe einer Generation kann auf frühere Startzeitpunkte aufgesetzt
werden |
| Beim Speichern des Startzeitpunkts wird:
- nicht nach DELTA und HISTO unterschieden,
- unter der Logon-Kennung (BNR und ggf .MBN) gespeichert (siehe Begriffsklärung Logon vs.
Melde-BNR)
|
| Viele, aber nicht alle Entitäten unterstützen Historisierung und damit auch
Delta-Abfragen, siehe Felder FELDVON und FELDBIS in der
Meldungsbeschreibung. |
| Der Timestamp am Server wird erst bei der
nächsten Aktion des Clients gespeichert. Z.b. sendet der
HitBatch-Client am Ende das LOGOFF-Command und meldet sich damit noch mal
beim Server, so dass dieser den Timestamp speichert. |
Verschiedene Sub-Codes
Übersicht
Sub-Code |
Definition |
Bedeutung |
Nur aktuelle |
Merken |
| /D
/D<n>
|
|
Delta |
"Delta" im engeren Sinn überträgt alle
geänderten aber noch aktuellen Daten seit der letzten gleichartigen RETRIEVE-Aktion eines
angemeldeten Benutzers. Nach Erzeugen der Abfrage, wird in den System-Protokoll-Tabellen
RETRIEVE und RETRCOND überprüft, ob und wann der angemeldete Betrieb diese Abfrage das
letzte mal ausgeführt hat. Wenn die Entität Timestamp-Abfragen unterstützt erhält
werden nur Datensätze deren Änderungs-Zeitstempel neuer als der Zeitpunkt der letzten
Ausführung ist zurückgegeben. Nach erfolgreicher Transfer wird der Zeitstempel
(Timestamp) des Übertragungsbeginns in die Tabelle RETRIEVE abgespeichert, so dass bei
dem nächsten Delta auf die selbe Entität dort automatisch wieder aufgesetzt wird.
Die Variante /N<n> siehe Hinweis *1) und
/D<ts>
siehe Hinweis *2).. |
JA |
JA |
| /H
/H<n>
/H<ts>
|
|
Histo |
"Histo" als erweiterte Form des Delta
überträgt nicht nur die aktuellen Sätze sondern auch die zwischenzeitlich
abgeschlossenen, d.h. die historisierten Teile geänderter Sätze und stornierte Sätze. |
NEIN |
JA |
| /M
/M<n>
/M<ts>
|
|
Modified |
"Modified" funktioniert analog zu Delta,
schreibt aber den Ausführungszeitpunkt nicht weg. Und kann so als Test für Delta dienen. |
JA |
NEIN |
| /N
/N<n>
/N<ts>
|
|
Neue |
"Neue" funktioniert analog zu Histo, schreibt
aber den Ausführungszeitpunkt nicht weg. |
NEIN |
NEIN |
| /B
/B<ts>
|
|
Basis |
"Basis" speichert eine Abfrage und schreibt
den Ausführungszeitpunkt weg, überträgt aber keine Daten. |
-- |
JA |
Erläuterungen
| Nur aktuelle - beachtet nur Sätze die noch gültig also nicht
historisert abgeschlossen sind. |
| Merken - bedeutet dass der Zeitpunkt der erfolgreichen Ausführung in
der Tabelle RETRIEVE abgespeichert wird. |
| Hinweis *1) : Für diese Subcodes gibt es
noch eine Variante mit Angabe eine Generationenangabe <n> wenn nicht auf dem letzten
sondern einem früheren abgespeicherten Delta-Ausführungs-Timestamp aufgesetzt werden
soll. Dabei bedeutet /x1 eine Generation, /x2 zwei Generationen vor dem letzten Delta. |
| Hinweis *2) : Bei
verschiedenen Subcodes (siehe /)
kann auch direkt ein Timestamp angegeben werden, der dann anstelle des in
der RETRIEVE-Tabelle gespeicherten verwendet wird. |
Interne Umsetzung
Zur Vereinfachung der Darstellung:
| werden VON und BIS hier als DATE dargestellt. Intern handelt es sich um Timestamps! |
| wird die Bedingung "VON <= aktueller Startzeitpunkt" zur
Vermeidung von "dirty reads" und damit Doppelübertragung nicht dargestellt.
Intern ist sie verwirklicht. |
Folgende Beispiele sind im MS Excel Tabellenblatt "Deltatransfer von Daten.XLS"
nachvollziehbar.
|
DELTA nur
aktuelle |
HITP-Aktion:
RS/D oder RS/M |
|
DELTA mit
Historie |
HITP-Aktion:
RS/H oder RS/N |
|
siehe
AAA_1997
|
Nr |
LOM |
Wert |
VON |
BIS |
aktuell |
1 |
276000900000001 |
Wert-1 |
01.01.1997 |
31.12.2100 |
aktuell |
2 |
276000900000002 |
Wert-2 |
01.01.1997 |
31.12.2100 |
aktuell |
3 |
276000900000003 |
Wert-3 |
01.01.1997 |
31.12.2100 |
bereits
storniert |
4 |
276000900000004 |
Wert-4 |
01.01.1997 |
31.08.1997 |
|
siehe
AAA_1997_Akt
Beliebiges
VON und aktuelles BIS |
SELECT *
FROM AAA_1997
WHERE VON > ''
AND BIS = '31.12.2100'; |
|
siehe
AAA_1997_Inc
Beliebiges
VON oder beliebiges geändertes BIS |
SELECT *
FROM AAA_1997
WHERE VON > ''
OR ( BIS > '' AND BIS < '31.12.2100' ); |
|
siehe
AAA_1998
|
Nr |
LOM |
Wert |
VON |
BIS |
unverändert |
1 |
276000900000001 |
Wert-1 |
01.01.1990 |
31.12.2100 |
geändert |
2 |
276000900000002 |
Wert-2 |
01.01.1990 |
01.04.1998 |
|
2 |
276000900000002 |
Wert-2a |
01.04.1998 |
31.12.2100 |
alten
storniert |
3 |
276000900000003 |
Wert-3 |
01.01.1990 |
01.05.1998 |
neu |
5 |
276000900000005 |
Wert-5 |
04.04.1998 |
31.12.2100 |
neu
& geändert |
6 |
276000900000006 |
Wert-6 |
04.04.1998 |
01.06.1998 |
|
6 |
276000900000006 |
Wert-6a |
01.06.1998 |
31.12.2100 |
neu
& gelöscht |
7 |
276000900000007 |
Wert-7 |
04.04.1998 |
31.08.1998 |
|
siehe
AAA_1998_Akt
Geändertes
VON und aktuelles BIS |
SELECT *
FROM AAA_1998
WHERE VON > '01.01.1998'
AND BIS = '31.12.2100'; |
|
siehe
AAA_1998_Inc
Geändertes
VON oder geändertes BIS |
SELECT *
FROM AAA_1998
WHERE VON > '01.01.1998'
OR ( BIS > '01.01.1998' AND BIS < '31.12.2100' ); |
|
|