Temporale Datenbank

Datenbanksystem, das eine Unterstützung zumindest einiger Aspekte der Speicherung zeitbezogener Daten bieten, die über die Unterstützung zeitbezogener Datentypen hinausgeht und die somit für eine temporale Datenhaltung besonders geeignet sind

Als temporale Datenbank werden Datenbanksysteme bezeichnet, die eine Unterstützung zumindest einiger Aspekte der Speicherung zeitbezogener Daten bieten, die über die Unterstützung zeitbezogener Datentypen hinausgeht[1] und die somit für eine temporale Datenhaltung besonders geeignet sind.

Neben den temporalen Datenbanken gibt es auch noch die spatio-temporalen Datenbanken, die neben der zeitlichen auch noch eine räumliche Dimension abbilden, der Schwerpunkt bei diesen Datenbanken liegt aber im Regelfall auf der räumlichen Dimension.

Abgesehen von Teradata 13.10 existiert derzeit noch kein kommerzielles Datenbanksystem, das die Anforderungen der temporalen Datenhaltung umfänglich abbildet. Es existieren jedoch einige Entwürfe, die im Wesentlichen Erweiterungen relationaler Datenbanken darstellen. Insbesondere der in Arbeit befindliche zukünftige Standard SQL/Temporal, der ursprünglich als Teil des SQL-Standards SQL3 bzw. SQL:1999 vorgesehen war, soll die Ansätze der derzeit existierenden Entwürfe vereinen und eine umfassende Unterstützung zur Speicherung temporaler Daten bieten.[2] Die Standardisierung geriet aufgrund von Meinungsverschiedenheiten einstweilig ins Stocken, sodass SQL/Temporal im Standard SQL:2008 ausblieb, aber der Standard SQL:2011 befasst sich mit temporalen Datenbanken.

Kriterien Bearbeiten

Die folgenden Kriterien sind zur Einordnung temporaler Datenbanken hilfreich:

  • Zeitdimension
    Dabei wird zwischen Gültigkeitszeit (Zeitraum, in dem ein Objekt in der modellierten Realität den beschriebenen Zustand aufweist) und Transaktionszeit (Zeitpunkt, zu dem eine Datenänderung in der Datenbank erfolgt) unterschieden. Sind sowohl Gültigkeits- als auch Transaktionszeit relevant, spricht man von bitemporal.
  • Verwendeter Datentyp zur Zeitstempelung
    Hier sind elementare Zeitangaben, Intervalle oder sogenannte temporale Elemente (eine Zusammenfassung beliebig vieler Intervalle) zu unterscheiden.
  • Explizite oder implizite Zeitstempelung
    Hierbei wird unterschieden, ob der Zeitstempel implizit vom Datenbanksystem ergänzt wird oder explizit angegeben werden muss.
  • Tupel- oder Attribut-Zeitstempelung
    Es ist zu unterscheiden, ob die Zeitstempelung für jedes Attribut einzeln oder für eine gesamte Datenzeile (Tupel) erfolgt.
  • Automatische temporale Normalisierung (Coalescing)
    Manche Datenbanksysteme führen nach entsprechenden Aktualisierungsoperationen automatisch eine Zusammenfassung von Zeiträumen mit übereinstimmenden Attributwerten durch.

Konzepte temporaler Datenbanken Bearbeiten

Im Folgenden werden wesentliche derzeitige Konzepte temporaler Datenbanken kurz dargelegt. Diese Aufstellung erhebt aber keinen Anspruch auf Vollständigkeit.

IXSQL Bearbeiten

Zeitdimension Gültigkeitszeit
Datentyp zur Zeitstempelung Intervall
Zeitstempelung explizit/implizit explizit
Tupel- oder Attributzeitstempelung Tupel
Automatisches Coalescing Nein

Das Interval Extended Relational Model (IXRM) und die darauf basierende Sprache IXSQL ist eine Erweiterung von SQL um eine umfassende Unterstützung von Intervalldaten, die sich nicht notwendigerweise ausschließlich auf temporale Intervalle beziehen müssen. Damit unterscheidet es sich grundlegend von den anderen hier vorgestellten Konzepten temporaler Datenbanken. IXSQL ist dabei aufwärtskompatibel zu SQL92.

Die wichtigsten Erweiterungen gegenüber SQL92 sind neben dem Intervall-Datentypen die Operationen FOLD („Zusammenfalten“) bzw. UNFOLD („Auffalten“). Dabei bewirkt UNFOLD eine Zerlegung eines Intervalls in eine Menge einzelner Punktwerte. FOLD ist die gegenteilige Operation – dabei wird eine Menge einzelner Punktdaten wieder zu Intervallen zusammengefasst – und bewirkt somit eine temporale Normalisierung für die betroffenen Attribute.

TSQL2 Bearbeiten

Zeitdimension bitemporal
Datentyp zur Zeitstempelung Temporales Element
Zeitstempelung explizit/implizit implizit
Tupel- oder Attributzeitstempelung Tupel
Automatisches Coalescing Ja

Die Sprache TSQL2 wurde von einer größeren Gruppe von Forschern entwickelt und basiert auf dem Bitemporal Conceptual Data Model (BCDM). Auch TSQL2 ist aufwärtskompatibel zu SQL92.

Das BCDM verwendet bitemporale Elemente zur Zeitstempelung, d. h., alle Tupel mit gleichen Attributwerten können immer zu einer einzigen Zeile zusammengefasst werden, da der bitemporale Zeitstempel die Vereinigungsmenge aller relevanten Zeitintervalle jeweils aufnehmen kann. Außerdem erfolgt die Zeitstempelung implizit, d. h., bei den Zeitstempeln handelt es sich um keine „normalen“ Attribute, die direkt beeinflussbar sind. Ein weiteres besonderes Merkmal des BCDM ist, dass diese Zusammenfassung von Tupeln mit gleichartigen Attributwerten (Coalescing) automatisch erfolgt.

Um auch zeitlich verankerte Intervalle abbilden zu können, existiert in TSQL2 der Datentyp PERIOD. In Verbindung mit diesem Typ werden auch zusätzliche spezielle Vergleichsoperatoren eingeführt (MEETS, PRECEDES, OVERLAPS und CONTAINS).

ATSQL2 Bearbeiten

Zeitdimension bitemporal
Datentyp zur Zeitstempelung Intervall
Zeitstempelung explizit/implizit explizit
Tupel- oder Attributzeitstempelung Tupel
Automatisches Coalescing Nein

Im Unterschied zu den anderen hier vorgestellten Konzepten stützt sich ATSQL2 nicht auf ein spezielles Datenbanksystem ab, sondern fungiert als Frontend eines herkömmlichen relationalen Datenbanksystems. Dabei werden beispielsweise Oracle und Sybase unterstützt.

Die von ATSQL2 verwendete Sprachsyntax ist an TSQL2 angelehnt. Jede Datenbank-Anweisung wird dabei in eine oder mehrere SQL92-Anweisungen umgewandelt.

Ein weiterer wesentlicher Unterschied von ATSQL2 zu den anderen vorgestellten Konzepten ist, dass es mit TimeDB bereits einen funktionsfähigen Prototyp gibt (siehe Weblinks).

Produkte mit Unterstützung für temporal Daten Bearbeiten

  • Oracle hat ab Version 10 Unterstützung für temporale Daten, und ab Version 12 die temporalen Funktion von SQL2011 implementiert[3]
  • DB2 von IBM bietet ab Version 10 Unterstützung für temporale Daten, welche auf dem SQL2011 Standard basieren[4]
  • PostgreSQL bietet ab Version 9.2 viele der temporalen Features an[5]
  • Teradata bietet ab Version 13.10 temporale Features und ab Version 14 TSQL2 Features
  • Microsoft SQL Server bietet ab Version 2016 Temporale Tabellen[6]
  • MariaDB bietet ab Version 10.3 temporale Funktionen[7]

Siehe auch Bearbeiten

Einzelnachweise Bearbeiten

  1. Consensus Glossary of Temporal Database Concepts
  2. Snodgrass, Böhlen, Jensen, Steiner: Transitioning Temporal Support in TSQL2 to SQL3, 1998 (PDF; 171 kB)
  3. Oracle v12c temporal features. Abgerufen am 1. Juli 2016.
  4. Temporal features in DB2 v10. Abgerufen am 1. Juli 2016.
  5. SQL2011 Features in PostgreSQL. Abgerufen am 1. Juli 2016.
  6. Temporal tables in MSSQL 2016. Abgerufen am 1. Juli 2016.
  7. MariaDB to Update its Server with Temporal Data Processing. dbta.com, 28. Februar 2018, abgerufen am 13. Januar 2019 (englisch).

Literatur Bearbeiten

  • Thomas Myrach: Temporale Datenbanken in betrieblichen Informationssystemen; Teubner Verlag; Wiesbaden 2005; ISBN 3-519-00442-9

Weblinks Bearbeiten