Gestern, heute, morgen – Temporal Support in DB2 for i – Teil I: Grundlagen

10. September 2017 | Von | Kategorie: Programmierung, Systemmanagement

Durchbruch im deutschsprachigen Raum bisher kaum beachtet: Zeitreisen sind möglich! Alles, was Sie dafür brauchen, ist ein IBM Power System mit dem Betriebssystem IBM i in der aktuellen Version 7.3. Das darin enthaltene relationale Datenbankmanagementsystem (RDBMS) DB2 for i führt das neue Feature namens „Temporal Support“ (TS) ein.

von Patrick Arnold

Dabei handelt es sich um eine systemseitige Historisierung von geänderten (Update) oder gelöschten (­Delete) Datensätzen. Die Datenbank unterstützt temporale Abfragen durch neue SQL-Statements.

Im Rahmen meiner Bachelorarbeit bei der All for One Steeb AG habe ich mir Temporal Support genauer angeschaut. Anwendungen aus dem Fachbereich DCW-Software setzen auf genannte IBM-Systeme und werden seit Jahrzehnten von Anwendern – unter anderem wegen ihrer Zuverlässigkeit – geschätzt. Warum der Einsatz dieser neuen Technologie auch hier Sinn macht und welche Vorteile die vom RDBMS nativ ­unterstützte temporale Datenhaltung bietet, galt es zu untersuchen.

Die Gesetze der Physik setzt IBM zwar nicht wirklich außer Kraft, dennoch müssen vorab andere Herausforderungen – gerade im Zusammenspiel mit DDS-basierten Anwendungen – erkannt und überwunden werden.

Als Einstieg in diese Artikelserie möchte ich Ihnen zunächst die Basics der temporalen Datenhaltung näherbringen. Ausgerüstet mit diesem grundlegenden Verständnis, ergeben sich die einen oder anderen Motive für Temporal Support beinahe von selbst. Einrichtung und Administration dieses Features sind sowohl über den klassischen Green Screen als auch über moderne Java- oder webbasierte GUIs möglich.

Temporale Datenhaltung bisher

Konventionelle RDBMS bieten keine temporale Datenhaltung an. Zugehörige Datensätze enthalten jeweils nur die aktuell gültigen Werte, die bei Updates oder Deletes unwiederbringlich durch neue Informationen ersetzt oder gelöscht werden. Zeitorientierte Datentypen und Operationen werden zwar durchaus unterstützt, sodass zumindest kontextbezogene Informa­tionen, beispielsweise zu Bewegungs- oder Stammdaten, festgehalten werden können. Dass Werte wie der Geburtstag eines Mitarbeiters oder das Produktionsdatum eines Artikels aber nicht zur Historisierung der Datensätze herangezogen werden können, leuchtet ein. Bei solchen benutzer- oder anwendungsdefinierten Datumswerten kann nicht gewährleistet werden, dass es sich ausschließlich um Gültigkeits- oder Transaktionszeiten bezüglich der Datensätze handeln. Das wäre für eine spätere Auswertung der Historie aber zwingend erforderlich.

Neue Möglichkeiten temporaler Abfragen

Abfragen sind komfortabel per SQL möglich. Das System prüft dabei im Hintergrund, ob aktuelle Daten aus der Temporal Table geliefert werden können, oder ob auf die History Table zurückgegriffen werden muss.
Abfragen sind für einen bestimmten Zeitpunkt oder einen Zeitraum möglich.

Zeitpunkt

  • SET CURRENT TEMPORAL SYSTEM_TIME = ‚2017-01-01‘
  • – SQL-Abfragen dieser Session liefern Werte, als wäre es der 01.01.2017.
  • SELECT * FROM example FOR SYSTEM_TIME AS OF CURRENT TIMESTAMP -1 YEAR;
  • – Diese Abfrage liefert den Datensatz aus der angegebenen Tabelle von vor einem Jahr.

Zeitraum

  • FOR SYSTEM_TIME FROM <date from> TO <date to>
  • – Werte des angegebenen Zeitraums – inklu­dierend – [date from : date to]
  • FOR SYSTEM_TIME BETWEEN <date from> AND <date to>
  • – Werte des angegebenen Zeitraums – exklu­dierend – ]date from : date to[

Ausblick auf Teil II

Im folgenden Artikel Teil II werde ich den Einsatz von Temporal Support an einem Beispiel demonstrieren und komplexe Abfragen nutzen. Weiterhin werden die Herausforderungen, die es zu bewältigen gilt, beleuchtet.

Kontaktieren Sie mich gerne für Feedback und ­Anregungen zur Artikelserie.

Patrick Arnold

Über den Autor

Patrick Arnold hat in Darmstadt Informatik studiert und als IT-/Netzwerktechniker gearbeitet. Die dabei erlernten Fähigkeiten setzt er nun bei der All for One Steeb AG im Fachbereich DCW ein, um neue Technologien, wie Node.js und Temporal Support, und deren Nutzen für die Stakeholder zu erkunden. Dabei legt er Wert auf Verständlichkeit; allzu trockene Inhalte lösen bestenfalls Schlafprobleme, die bei seiner Affinität zu gutem Kaffee doch aber gewollt sind. Als Kind der 80er kennt er zwar die besten Zeitreisefilme, hatte im allgemeinen Informatikstudium und als Android-Nutzer aber kaum Berührungspunkte zur „i-Welt“. Dank Vorlesung und Bachelorarbeit bei Manfred Sielhorst hat sich das aber geändert.

Über Feedback und Fragen freut sich der Autor immer unter: patrick.arnold (ät) all-for-one.com.

Schlagworte: , , , , , ,

Schreibe einen Kommentar

Sie müssen eingeloggt sein, um einen Kommentar schreiben.