Blog

Die Zeit im Griff: Wie Temporal Tables Dein Datenmanagement revolutionieren

Daten auf eine völlig neue Art und Weise verwalten

Blog

Die Zeit im Griff: Wie Temporal Tables dein Datenmanagement revolutionieren

Daten auf eine völlig neue Art und Weise verwalten

Du bist auf der Suche nach einer effektiven Methode, um Dein Datenmanagement zu revolutionieren und dabei auch noch Methoden für eine History und ein Audit umzusetzen? Dann solltest Du Dich unbedingt mit dem Thema Temporal Tables auseinandersetzen.

Mit diesen speziellen Einstellungen für Tabellen in Microsoft SQL-Servern hast Du die Möglichkeit, Daten auf eine völlig neue Art und Weise zu verwalten. Durch die Erstellung einer „system-period temporal table“ kannst Du nicht nur die aktuellen Daten in einer Tabelle speichern, sondern auch die Änderungen im Verlauf der Zeit nachverfolgen. So behältst Du stets den Überblick über die Entwicklung Deiner Daten und hast Zugriff auf eine umfassende History. Probiere es aus und starte jetzt mit der Erstellung Deiner ersten Temporal Table.

Was sind Temporal Tables?

Du hast sicher schon einmal von Datenbank-Tabellen gehört. Temporale (nicht zu verwechseln mit temporären) Tabellen sind eine besondere Art davon, die es ermöglichen, Daten nicht nur aktuell zu speichern, sondern auch ihre historischen Veränderungen festzuhalten.

Eine temporale Tabelle enthält dabei zusätzlich ein System-Period-Start-Datum und -End-Datum pro Zeile, das den Zeitraum angibt, für den diese Zeile gültig war. Dadurch können nicht nur die aktuellen Daten abgefragt werden, sondern auch vergangene Zustände der gespeicherten Informationen.

Hierbei gibt es zwei Arten von temporalen Tabellen: system-versioned und application-time-period. Bei system-versioned Temporal Tables wird die Historie automatisch durch das Erstellen von Versionen der Datensätze verwaltet und in einer separaten History-Tabelle gespeichert. Der Vorteil liegt darin, dass man hierfür keinen komplizierten Code schreiben muss – das System übernimmt das automatisch. Ein Beispiel dafür ist die Implementierung in Microsoft SQL Server ab 2016 mit dem Befehl „CREATE TABLE foo (….) SYSTEM VERSIONING“.

BAYOOTEC Temporal Tables Datenmanagement

Was sind die Vorteile von Temporal Tables?

Temporal Tables bieten einige Vorteile gegenüber der manuellen Speicherung von Daten in historisierten Tabellen.

  • Historische Datenverwaltung: Temporal Tables ermöglichen es, eine historische Aufzeichnung von Datenänderungen in der Datenbank zu führen. Das ist nützlich, um die Entwicklung von Daten im Laufe der Zeit zu verfolgen und Rückblicke auf vergangene Zustände zu ermöglichen.
  • Zeitbasierte Abfragen: Temporal Tables erleichtern das Ausführen von Abfragen, die sich auf einen bestimmten Zeitpunkt oder einen Zeitraum in der Vergangenheit beziehen. Dies ist besonders hilfreich, wenn du trendbasierte Analysen durchführen oder historische Daten vergleichen möchtest.
  • Datenarchivierung: Historische Daten können in Temporal Tables effizient archiviert werden, ohne die Integrität der aktuellen Daten zu beeinträchtigen. Dies ermöglicht eine bessere Datenverwaltung und die Einhaltung von Compliance-Anforderungen.
  • Fehleranalyse und Compliance: Temporal Tables sind nützlich, um Datenänderungen nachzuverfolgen und zu überwachen. Dies kann bei der Fehlersuche, der Identifizierung von Datenproblemen und der Einhaltung von Compliance-Vorschriften wie Datenschutzvorschriften helfen.
  • Zeitgesteuerte Audits: Temporal Tables ermöglichen die einfache Erstellung von Zeitstempeln und Audit-Protokollen für Datenänderungen. Dies erleichtert die Nachverfolgung, wer wann welche Änderungen an den Daten vorgenommen hat.
  • Wiederherstellung von Daten: Temporal Tables können bei Datenverlust oder unerwünschten Änderungen helfen, da sie die Möglichkeit bieten, den Datenzustand zu einem früheren Zeitpunkt wiederherzustellen.
  • Einfache Datenmigration: Wenn du Daten zwischen verschiedenen Versionen einer Anwendung oder Datenbank migrieren musst, erleichtern Temporal Tables den Prozess, da sie bereits historische Daten enthalten.
  • Data Warehouse-Integration: Temporal Tables können in Data-Warehouses integriert werden, um historische Daten für analytische Zwecke zur Verfügung zu stellen. Dies ist besonders wertvoll für Business Intelligence und Data-Analytics-Anwendungen.
  • Benutzerfreundlichkeit: Die Abfrage von historischen Daten in Temporal Tables erfolgt in der Regel auf eine intuitive Weise, wodurch die Benutzerfreundlichkeit verbessert wird.
  • Bessere Datenqualität Temporal Tables ermöglichen es, Datenänderungen zu überwachen und Fehlerquellen zu identifizieren, was zur Verbesserung der Datenqualität beitragen kann.

Wie funktionieren Temporal Tables auf Datenbank-Ebene in MS SQL?

Um eine Temporal Table in MS SQL Server zu erstellen, musst Du eine normale Tabelle erstellen und sie mit einer Historientabelle verknüpfen. Die Haupttabelle enthält die aktuellen Daten, während die Historientabelle die historischen Versionen der Daten speichert. Dabei werden nur die geänderten Datensätze gespeichert und nicht der komplette Zustand der Tabelle.

Temporal Tables Datenmanagement

Wenn Du Daten in der Haupttabelle änderst, erstellt SQL Server automatisch eine historische Version der geänderten Daten in der Historientabelle. Dies erfolgt mithilfe von Zeitstempeln (ValidFrom und ValidTo), die den Gültigkeitszeitraum der Datensätze angeben. So kannst du Datenänderungen nachverfolgen.

Um historische Daten abzufragen, kannst Du die „FOR SYSTEM_TIME“-Klausel in Deinen SQL-Abfragen verwenden. Hier ist ein einfaches Beispiel:

Temporal Tables Datenmanagement

Mit dieser Klausel kannst Du Daten zu einem bestimmten Zeitpunkt oder innerhalb eines Zeitraums in der Vergangenheit abrufen.

Mit „ALTER TABLE … SET (SYSTEM_VERSIONING = OFF)“ kannst Du die Systemversionierung für eine Temporal Table deaktivieren. Dies löscht jedoch nicht automatisch die historischen Daten in der Historientabelle. Wenn Du die Systemversionierung erneut aktivierst, kannst du die historischen Daten weiterhin verwenden.

Wie funktionieren Temporal Tables mit LINQ in EF Core 6?

Um zunächst ein Modell für die Temporal Table zu erstellen, brauchst Du ein Modell in deiner EF Core-Anwendung, das die Temporal Table repräsentiert. Dieses Modell sollte die relevanten Eigenschaften für die Haupttabelle enthalten.

Temporal Tables Datenmanagement

Du kannst historische Daten mithilfe von LINQ-Abfragen abrufen, indem du die AsOf-Methode verwendest. Diese Methode ermöglicht es Dir, den Zeitpunkt oder den Zeitraum anzugeben, für den Du historische Daten abrufen möchtest.

Temporal Tables Datenmanagement

Aktuelle Daten abrufen: Wenn Du die aktuellen Daten abrufen möchtest, kannst Du dies auf die gleiche Weise tun, ohne die AsOf-Methode zu verwenden.

Temporal Tables Datenmanagement

Stelle zur Nutzung sicher, dass Du die Systemversionierung für die Temporal Table in der Datenbank aktiviert hast. Du kannst dies über SQL Server Management Studio (Database-first-Ansatz) oder über eine Migration in EF Core (Code-first-Ansatz) durchführen.

Unsere Erfahrungen

Temporal Tables kommen bei uns zunehmend häufiger zum Einsatz, da auch unsere Kunden von den Vorteilen überzeugt sind. Besonders für Kunden, für die wir Business Intelligence Anwendungen implementieren und betreuen, sind sie relevant, da Budgetplanungen und Umsatzänderungen analysiert werden müssen.

BAYOOTEC - Unsere Erfahrung mit Temporal Tables

Mit der Einführung von Temporal Tables kann nun einfach ein Datensatz zum Zeitpunkt X ausgewählt und mit dem aktuellen Stand verglichen werden. Früher mussten dafür „Snapshots“ der Daten separat abgespeichert werden. Dies hatte eine höhere Speicherplatznutzung und schlechtere Performance zur Folge.

Auch im Falle eines Imports von Datensätzen in eines unserer Systeme konnten wir bereits von Temporal Tables profitieren, da bei einem fehlerhaften Import nicht immer ein Backup möglich ist. Mit historischen Queries können jedoch fälschlicherweise gelöschte Datensätze jederzeit wiederhergestellt werden, ohne Änderungen an anderen Datensätzen zu löschen.

Insgesamt ist die Anwendung von Temporal Tables in vielen unserer Projekte nicht mehr wegzudenken und hat durch ihren geringen Implementierungsaufwand und den großen Nutzen bereits Einzug in den Projektalltag genommen.

Fazit: Temporal Tables revolutionieren das Datenmanagement

Du weißt nun, was Temporal Tables sind und wie sie Dein Datenmanagement revolutionieren können. Wenn Du eine temporale Tabelle erstellst, kannst Du alle Änderungen an Deinen Daten im Laufe der Zeit verfolgen. Das bedeutet, dass Du immer die aktuelle Version Deiner Daten abrufen, aber auch auf frühere Versionen zurückgreifen kannst, um zu sehen, wie sich Deine Daten über die Zeit entwickelt haben. Mit einem System-Period oder einem System-Versioned Schema in beispielsweise MS SQL Server kannst Du alles einfach einrichten und verwalten. Eine solche Tabelle speichert dabei neben den aktuellen Row-Daten auch einen Zeitraum (start date/end date) für jede Zeile sowie automatisch generierte Historiendaten für jede Änderung an der betreffenden Zeile.

Das ermöglicht es Unternehmen und Entwickler:innen gleichermaßen, zeitliche Abfragen und Analysen flexibel zu gestalten und somit mehr Erkenntnisse aus ihren Daten zu gewinnen. Darüber hinaus bietet das System-Versioned Schema von Microsoft SQL Server ab Version 2016 eine einfache Möglichkeit zur Migration bestehender Tabellen in system-versionierte Tabellen.

Durch die Nutzung von Temporal Tables kann also das gesamte Data-Life-Cycle-Management verbessert werden – von der Datenspeicherung bis hin zur Bearbeitung und Analyse. Und seitdem .NET EF Core 6 die Integration vereinfacht hat, sind sie umso einfacher zu nutzen.

Also worauf wartest du noch? Starte jetzt damit, Dein Datenmanagement mit Temporal Tables zu revolutionieren!

Jetzt teilen
BAYOOTEC - Softwareentwicklung von Enterprise Software
Über die Autorin
BAYOOTEC Team - Beatrice Mende, Software Architect
Beatrice Mende, SENIOR SOFTWARE ARCHITECT

Seit fast 9 Jahren schätzen wir Bea als Teil unseres BAYOOTEC Teams. Ihre Reise begann vor 2,5 Jahren als Softwareentwicklerin, mittlerweile unterstützt sie uns mit ihrer Expertise als Senior Softwarearchitektin.

Bea ist nicht nur beruflich erfolgreich, sondern auch eine leidenschaftliche Tierliebhaberin mit einem quirligen Shiba Inu und zwei Schlangen zu Hause. Ihre Freizeit widmet sie zudem Brettspielen, Dungeons & Dragons sowie verschiedenen Online-Spielen. Ihre künstlerische Ader zeigt sich im Chorsingen und im Schneidern von Kostümen. Ihre Vielseitigkeit manifestiert sich auch in ihrem Ruf, stets kreative Lösungen für Probleme zu finden.

In beruflichen Projekten liegt Beas Verantwortungsbereich im .NET Bereich, wobei ihr besonderes Interesse den SQL-Datenbanken gilt. Mit ihrer Fachkompetenz und ihrer Fähigkeit, Herausforderungen kreativ zu bewältigen, prägt Bea die Erfolgsgeschichte von BAYOOTEC maßgeblich.

BAYOOTEC - Softwareentwicklung von Enterprise Software