Wenn es darum geht, für die Performance-Daten in einer transaktionalen Datenbank Denormalisierung gibt es (mindestens) drei verschiedene Ansätze:Vor- und Nachteile von Trigger vs. Stored Procedures für Denormalisierung
Push-Updates über gespeicherte Prozeduren des Aktualisierung sowohl der normalisierten Transaktionsdaten als auch der denormalisierten Berichts-/Analysedaten;
Implementieren Sie Trigger für die Transaktionstabellen, die die sekundären Tabellen aktualisieren. Dies ist fast immer der Weg, der bei der Pflege von Geschichten genommen wird;
Die Verarbeitung auf einen nächtlichen Batch-Prozess verzögern, möglicherweise ETL in ein Data Mart/Warehouse.
die für die Zwecke dieser Frage 3 die Option annehmen Lassen # nicht lebensfähig ist, da die Domäne der normalisierte Daten erfordert jederzeit mit den normalisierten Daten konsistent sein. Hierarchische Aggregate, mit denen ich mich ziemlich oft beschäftige, sind ein Beispiel dafür.
Ich habe beide der ersten beiden Ansätze ein gutes Stück verwendet und in letzter Zeit habe ich mich auf den Trigger-basierten Ansatz gelehnt, aber ich frage mich, ob es irgendwelche "gotchas" gibt, die ich noch nicht entdeckt habe und dachte, dass es sich lohnen würde, diese Frage zu stellen, damit ich einige Ideen im Hinterkopf behalten kann, wenn ich langfristige Entscheidungen in der Zukunft treffe.
Was sind Ihrer Meinung nach die Vor- und Nachteile beider Tools für den speziellen Zweck der Echtzeitspeicherung derormalisierter Daten? In welchen Situationen würdest du eins wählen und warum?
(PS Bitte keine Antworten wie „Trigger zu kompliziert ist“ oder „alle Updates sollte immer eine gespeicherte Prozedur durchmachen“ - es auf den Kontext der Frage angemessen machen.)
ist es nicht besser, eine materialisierte Ansicht für Denormalisierungen zu verwenden? – Enrique
@Enrique: Materialisierte Ansichten sind kein magisches Allheilmittel; Es gibt alle Arten von Ansichten, die Sie nicht wirklich realisieren können (oder sogar mit einer Schema-Bindung erstellen) und selbst wenn Sie könnten, hätten sie ungefähr die gleichen Leistungsmerkmale wie Trigger. – Aaronaught