Frage

Ich stehe vor der Herausforderung, eine neue Datenbank mit einem RDBMS, genauer gesagt Oracle, zu entwerfen.In dieser Datenbank gibt es einen bestimmten Datensatz/ein bestimmtes Dokument, das sich über mehrere Tabellen erstrecken kann.

Mit so wenig Duplikaten wie möglich möchte ich den Überblick über die an diesem Datensatz vorgenommenen Änderungen behalten und eine einfache Möglichkeit bieten, geänderte Kopien dieses Datensatzes zu erstellen.

Ich will kein Geschichte Tabelle, die die Änderungen im Text zusammenfasst, weil ich in der Lage sein möchte, sie abzurufen document x genau so, wie es aussah time t.Aber ich möchte auch nicht für jeden Verlaufseintrag eine vollständige Kopie haben.

Gibt es Best Practices oder Muster Wie erreicht man das?

Ich habe vielleicht eine Idee, wie ich das mithilfe einer Strategienachahmung lösen kann git, aber ich wollte zuerst ein paar Meinungen einholen, bevor ich diesen Weg gehe.

War es hilfreich?

Lösung

Speziell in Oracle 12c gibt es eine neue Funktion namens „Temporal Flashback Queries“, die genau diesem Zweck dient.(Ähnliche Funktionen sind in anderen Datenbanken verfügbar:DB2, SQL Server, Vertica, um nur einige zu nennen.)

So aktivieren Sie zeitliche Abfragen:

  1. Stellen Sie sicher, dass jede der Tabellen, die Ihr Dokument darstellen, über ein Datumspaar verfügt, das das Start- und Enddatum (die Uhrzeit) angibt, zu dem ein bestimmter Datensatz gültig (aktiv) war, und
  2. Bewahren Sie historische Aufzeichnungen auf, indem Sie sie nicht aktualisieren, sondern indem Sie neue Versionen der Aufzeichnungen einfügen und nur die Enddaten der historischen Aufzeichnungen aktualisieren.

Anschließend können Sie Abfragen für Ihre Tabellen durchführen, die ähnlich aussehen SELECT whatever FROM mytable AS OF some_date, wodurch die Datensätze zurückgegeben würden, die zum angegebenen Datum aktiv waren.

Sie können das lesen Ausführliche Beschreibung hier.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top