Zum Hauptinhalt springen

Data Contract Best Practices

Was sind die Best Practices für Data Contracts?

Von Dr. Simon Harrer · · Video 2:58 · 7 Folien

Kurz gesagt

Nutze einen Data Contract für einen Output Port, mit einem Schema und einer Leserolle. Leg den Data Contract ins Git-Repository des Datenprodukts. Versioniere ihn wie eine API und behandle den aktiven Data Contract als Source of Truth.

Auf YouTube ansehen
Folie 1 von Entropy Explains Folge 11, Eins zu eins: Ein Data Contract in einer Major-Version beschreibt einen Output Port.

Eins zu eins

Ein Data Contract in einer Major-Version beschreibt einen Output Port. Dieser Output Port ist ein Datenbankschema mit einer oder mehreren Tabellen und einer Leserolle. Du kannst eine andere Struktur nutzen, aber das macht Probleme. Mit einem Data Contract pro Tabelle bekommst du zu viele Data Contracts.

Folie 2 von Entropy Explains Folge 11, Welche Daten er schützt: Ein Data Contract schützt ein Datenbankschema mit allen seinen Tabellen.

Welche Daten er schützt

Ein Data Contract schützt ein Datenbankschema mit allen seinen Tabellen. Der Schema-Abschnitt des Data Contracts listet diese Tabellen. Output Port, Schema und Server haben denselben Namen. Jeder Name enthält die Major-Version, und jede Umgebung hat ihren eigenen Server.

Folie 3 von Entropy Explains Folge 11, Eine Leserolle: Jeder Data Contract definiert eine Leserolle.

Eine Leserolle

Jeder Data Contract definiert eine Leserolle. Die Plattform erstellt diese Rolle automatisch, mit Lesezugriff nur auf dieses Schema. Data Consumers beantragen Zugriff auf diese Rolle, so wissen sie, wonach sie fragen müssen. Eine zweite Rolle, etwa für personenbezogene Daten, ist möglich und macht kaum Probleme.

Folie 4 von Entropy Explains Folge 11, Wo Data Contracts liegen: Data Contracts liegen im Git-Repository des Datenprodukts, neben dem Code.

Wo Data Contracts liegen

Data Contracts liegen im Git-Repository des Datenprodukts, neben dem Code. Der Data Contract des Output Ports sagt, was das Datenprodukt gibt. Ein optionaler Data Contract für den Input Port sagt, was das Datenprodukt von einem anderen Datenprodukt nutzt. Du kannst eigene Qualitätschecks ergänzen.

Folie 5 von Entropy Explains Folge 11, Eine neue Spalte ist eine Minor-Version: Versioniere den Data Contract wie eine API.

Eine neue Spalte ist eine Minor-Version

Versioniere den Data Contract wie eine API. Streng genommen ist eine neue Spalte ein Breaking Change, weil SELECT star dann eine Spalte mehr zurückgibt. Wir erlauben SELECT star nicht. Also ist eine neue Spalte nur eine Minor-Version.

Folie 6 von Entropy Explains Folge 11, Ein Breaking Change bekommt v2: Ein Breaking Change bekommt eine neue Major-Version.

Ein Breaking Change bekommt v2

Ein Breaking Change bekommt eine neue Major-Version. Version 2 hat ihren eigenen Output Port, ihr eigenes Schema und ihre eigene Leserolle. Version 1 wird deprecated, und beide Versionen laufen eine Übergangszeit parallel. Die Data Consumers wechseln in ihrem eigenen Tempo auf Version 2. Dann wird Version 1 abgeschaltet.

Folie 7 von Entropy Explains Folge 11, Die Source of Truth: Wenn ein Data Contract aktiv ist, ist er die Source of Truth.

Die Source of Truth

Wenn ein Data Contract aktiv ist, ist er die Source of Truth. Wenn Daten und Data Contract nicht übereinstimmen, sind die Daten falsch. Also beginnt jede Änderung im Data Contract. Danach folgen Code und Daten.