Dekodierung von Live-Daten für Berichte - Gut oder Schlecht?

7

Was sind die Vor- / Nachteile der Entnormalisierung einer Unternehmensanwendungsdatenbank, weil dadurch das Schreiben von Berichten vereinfacht wird?

Pro - das Entwerfen von Berichten in SSRS wird wahrscheinlich "einfacher" sein, da keine Joins erforderlich sind.

Con - Die Entwicklung / Pflege der App für den Umgang mit de-normalisierten Daten wird durch die Duplizierung von Daten und die Synchronisierung schwieriger.

Andere?

    
Travis Heseman 20.11.2009, 18:34
quelle

6 Antworten

19

Denormalisierung für Berichte ist schlecht, m'kay.

Erstellen von Ansichten oder ein denormalisiertes Data Warehouse ist gut.

Die Ansichten haben die meisten meiner Berichtspflichten gelöst. Data Warehouses sind großartig, wenn Benutzer fast ständig Berichte generieren oder wenn Ihre Ansichten langsamer werden.

Deshalb möchten Sie Ihre Datenbank normalisieren

  
  1. Freigeben der Sammlung von Beziehungen aus unerwünschten Einfügungs-, Aktualisierungs- und Löschungsabhängigkeiten;
  2.   
  3. Um die Notwendigkeit der Umstrukturierung der Sammlung von Beziehungen als neue Arten von Daten zu reduzieren, und damit die Lebensdauer von Anwendungsprogrammen zu erhöhen;
  4.   
  5. Um das relationale Modell informativer für die Benutzer zu machen;
  6.   
  7. Um die Sammlung von Relationen neutral gegenüber den Abfragestatistiken zu machen, wo sich diese Statistiken mit der Zeit ändern können.
  8.   

-E.F. Codd, "Weitere Normalisierung des relationalen Datenbank-Modells" über wikipedia

    
Bob 20.11.2009, 18:37
quelle
6

Das einzige Mal, dass Sie eine De-Normalisierung in Betracht ziehen sollten, ist, wenn die Zeit, die der Bericht benötigt, nicht akzeptabel ist. Die De-Normalisierung führt zu Konsistenzproblemen, die manchmal insbesondere in großen Datensätzen nicht festgestellt werden können.

    
ennuikiller 20.11.2009 18:37
quelle
4

Denormalisieren Sie nicht nur, um die Komplexität in der Berichterstellung zu beseitigen, dies kann im Rest der Anwendung zu großen Problemen führen. Entweder erzwingen Sie nicht die Regeln, die zu schlechten Daten führen, oder wenn Sie das tun, dann können Einfügungen, Löschungen und Aktualisierungen für alle, nicht nur für die zwei oder drei Personen, die Berichte ausführen, ernsthaft verlangsamt werden.

Wenn die Berichte wirklich nicht ordnungsgemäß ausgeführt werden können, erstellen Sie ein denormalisiertes Data Warehouse, und füllen Sie es in einem nächtlichen oder wöchentlichen Feed auf. Die Art von Berichten, die dies normalerweise benötigt, ist im Allgemeinen nicht relevant, wenn die Daten aktuell sind, da es sich normalerweise um monatliche, vierteljährliche oder jährliche Berichte handelt, die nach der Tat große Datenmengen verarbeiten (und insbesondere aggregieren). p>     

HLGEM 20.11.2009 18:48
quelle
2

Sie können beides tun ... lassen Sie die normalisierte Datenbank für Anwendungen. Erstellen Sie dann eine denormalisierte Datenbank für Berichte und erstellen Sie eine Anwendung, die regelmäßig Daten von einer Datenbank in die andere kopiert.

Schließlich müssen Berichte nicht immer die neuesten aktualisierten Daten enthalten. In den meisten Fällen können Sie problemlos alle 1 Stunde ein Update in der Berichtsdatenbank und nur einmal am Tag durchführen.

    
Nicolas Dorier 07.01.2010 16:40
quelle
1

Über die Data Warehouse- und View-Lösungen in anderen Antworten hinaus, die in mancher Hinsicht gut sind, wenn Sie bereit sind, etwas Leistung zu opfern, um ein gutes Ergebnis für die letzte Sekunde zu erhalten, aber trotzdem eine normalisierte Datenbank haben möchten Auf Oracle eine Materialized View mit schneller Aktualisierung bei Commit oder in Sql Server, könnten Sie Clustered-Indizes für eine Ansicht verwenden.

    
kurast 07.01.2010 16:49
quelle
0

Ein weiterer Nachteil ist, dass die Daten wahrscheinlich nicht in Echtzeit vorliegen, da es einige Zeit gibt, um die Daten zu bewegen, um von einer normalisierten Form zu einer de-normalisierten zu gelangen. Wenn jemand möchte, dass der Bericht bis zur Sekunde erscheint, in der er angefordert wurde, kann das in dieser Situation schwierig sein.

Wenn dies eine Duplizierung der Synchronisation im ursprünglichen Post ist, tut mir leid, dass ich das nicht so gesehen habe.

    
JB King 20.11.2009 18:42
quelle