Loading...

Redundant Information

26. Oktober 2023
2 Minuten Lesezeit
Beitrag teilen:

Hi,

“Nach dem Import packen wir das File aus und lesen die Meta-Informationen”

“Und wo schreiben wir sie rein”

“Diese Information wird in unterschiedlichen Datenbanken abgelegt. Die Path Information wird auf allen Service Datenbanken verteilt, damit diese wissen wie sie auf die Files zugreifen. Andere Daten legen wir in die System-Datenbank und in jede Tenant-Datenbank.”

Klingt das für dich normal?

Sollte es nicht.

Was wir hier erleben ist Informationsduplizierung.

“Aber Marcus, warum ist das denn so schlimm? Wir brauchen die Information halt an unterschiedlichen stellen.”

Ja. Stimmt. Die gleiche Information wird an mehreren Stellen benötigt.

Das ist meistens der Fall.

Wenn wir uns innerhalb einer Applikation befinden, dann kommen wir nicht auf die Idee für jedes Feature neue Tabellen zu erstellen.

Natürlich bauen wir eine Datenstruktur, die für alle Features funktioniert.

Und warum machen wir das?

Wir wollen die Applikation leicht verändern.

Wenn alle Features den gleichen Datensatz verwenden, dann können wir ihn zentral verändern.

Es wäre auch eigenartig, wenn wir den Preis eines Buches verändern und dieser nur im Detail-View angezeigt wird.

Natürlich soll er auch in den Suchergebnissen angezeigt werden.

Die redundante Ablage der gleiche Information ist ein Einfalltor für Bugs.

Es macht die Applikation schwer wartbar.

Eine Änderung der Logik muss an allen Stellen, an allen Services, in allen Datenbanken vorgenommen werden.

Kaum Einer kann alle Stellen auf Dauer überblicken.

Deswegen ist es so wichtig, dass wir immer nur eine Wahrheit haben.

Das gilt auch für Invertierbare Transformationen.

Wenn wir zum Beispiel einen Onlineshop betreiben:

Wir wollen den Bruttopreis eines Produkts berechnen. Der Bruttopreis eines Produkts ist der Nettopreis * Mehrwertsteuer. Der Bruttopreis ist direkt mit dem Nettopreis verknüpft. Er kann jederzeit aus diesem berechnet werden. Damit ist er keine neue Information. Deswegen brauchst du nur den Nettopreis speichern. ****

Der Bruttopreis ist lediglich eine Transformation der vorhandenen Daten.

Wenn du das nächste Mal an deinem Datenschema arbeitest, überlege, ob du duplizierte Informationen speichern möchtest. Und vermeide es!

Rule the Backend,

~ Marcus

Top