Versionierung/Historisierung

Konfiguration des PostgreSQL Datenbankservers.
Antworten
ballibum
Benutzer
Beiträge: 79
Registriert: Mo 27. Apr 2009, 11:11

Versionierung/Historisierung

Beitrag von ballibum » Do 21. Feb 2019, 09:15

Hallo liebes Forum,

ich möchte gerne alle Datenbankeinträge historisieren, d.h. wenn ich eine Datenbankabfrage stelle möchte ich immer das aktuellste Element eines Eintrages haben. Wenn ich aber einen Timestamp (oder ähnliches) mitgebe, möchte ich den zu diesem Zeitpunkt gültigen Eintrag haben. Das heißt auch das gelöschte Element zu einem bestimmten Zeitpunkt noch existieren und neue Objekte zu älteren Zeitpunkten noch nciht existieren. Mir ist so als hätte ich zu diesem Thema einmal etwas gelesen und das Postgresql dieses bereits von Haus aus kann, nur "eben" entsprechend konfiguriert werden muss. Kann mir eventuell jemand die passenden Stichpunkte nennen, damit ich mich in die Materie besser einarbeiten kann. Ich vermute auch ganz stark, dass nicht alle Wünsche sofort umgesetzt werden können - möchte diese Funktionalität aber erstmal grundlegend verstehen und kennenlernen.
beste Grüße
Balli

akretschmer
Erfahrener Benutzer
Beiträge: 7677
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Versionierung/Historisierung

Beitrag von akretschmer » Do 21. Feb 2019, 09:25

Direkt und InCore geht das (noch) nicht. Was Du machen kannst: zu jedem Eintrag eine Spalte führen, die den Gültigkeitszeitraum beschreibt. TSRANGE als Datentyp böte sich an, und ein EXCLUSUIN CONSTRAINT darüber, daß es da keine Überschneidungen geben darf. Bei Update oder Delete speicherst den alten Datensatz dann z.B. in einer extra Tabelle mit eben dieser Spalte. In der eigentlichen Tabelle hast so den aktuellen Wert, in der Historien-Tabelle alle historischen Werte.

Das mal so als grobe Idee.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

castorp
Erfahrener Benutzer
Beiträge: 1174
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Versionierung/Historisierung

Beitrag von castorp » Do 21. Feb 2019, 11:59

Hier ist ein Blogbeitrag der das Vorgehen etwas genauer beschreibt:

https://www.cybertec-postgresql.com/en/ ... ostgresql/
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

akretschmer
Erfahrener Benutzer
Beiträge: 7677
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Versionierung/Historisierung

Beitrag von akretschmer » Do 21. Feb 2019, 12:12

hach, der gute Hans ;-)
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten