Zum Inhalt springen

DDM_ENTITY_VERSION

Status: Entwurf · Spec-Kandidat: ja

Zweck

Immutabler JSONB-Snapshot einer Entität zu einer bestimmten Versionsnummer. Erlaubt fachliche Wiederherstellung und detaillierte Historisierung über das AA_AUDIT_LOG hinaus.

Felder

FeldTypPflichtHinweise
iduuidjaPK
entity_iduuidjaFK → DDM_ENTITY (RESTRICT)
version_nointegerjafortlaufende Versionsnummer je Entität
snapshotjsonbjavollständiger Datensatz als JSON-Objekt
created_attimestamptzja
created_bytextnein

Constraints

  • entity_version_snapshot_is_object_chk: jsonb_typeof(snapshot) = 'object'
  • entity_version_unique_uk: (entity_id, version_no) eindeutig

Verhalten

  • Snapshot wird durch den Service-Layer in derselben Transaktion wie die Mutation geschrieben (nicht durch Trigger).
  • Frequenz (gesetzt, OP-12): bei jedem INSERT (Version 1) und jedem UPDATE der Entität wird ein voller Snapshot in DDM_ENTITY_VERSION geschrieben. Keine Selektivität nach Statuswechsel/Freigabe.
  • Inhalt (gesetzt): voller JSONB-Snapshot des relationalen Kerns + attributes. Format:
    {
    "tenant_id": "...",
    "entity_type_id": "...",
    "code": "...",
    "name": "...",
    "status": "...",
    "version": 7,
    "attributes": { ... },
    "captured_at": "2026-04-27T12:34:56Z"
    }
    Beziehungen sind nicht Teil des SnapshotsDDM_ENTITY_RELATION-Mutationen werden über das AA_AUDIT_LOG (Aktion relate/unrelate) historisiert und können bei Bedarf rückwärts rekonstruiert werden. Begründung: zwei Schreibwege wären redundant, und Beziehungs-Versionen pro Entität verdoppeln Speicher pro betroffener Beziehung.
  • version_no ist exakt gleich DDM_ENTITY.version zum Zeitpunkt des Snapshots. DDM_ENTITY.version wird per Trigger (trg_entity_before_write) inkrementiert, der Service liest den neuen Wert nach RETURNING version und schreibt damit DDM_ENTITY_VERSION.version_no — keine Lücken, keine Konflikte.
  • Soft-Delete (deleted_at setzen) erzeugt keine neue Version (es ist kein fachliches Update). Restore (Reaktivierung) erzeugt wieder eine neue Version.

Offen

  • Aufbewahrung und Komprimierung großer Historien (Retention-Policy, Partitionierung).

Verwandte Dokumente