Frage

Tabellen ein Anti-Muster Inszenierung, die verwendet wird, wenn rpc (wie Java RMI oder irgendeine Art von Web-Service-Call) oder Messaging-Warteschlange (wie JMS) wäre eine bessere Lösung sein, oder gibt es Probleme besser gedient, die Aufenthaltsorte Tabellen?

Zur Klarstellung:

Mit dem Staging-Tabellen meine ich jene Fälle, in denen Datensätze in einer Tabelle angehängt werden oder Tabellen, die von einem Prozess, der dann durch gelesen und beaufschlagt durch die zweiten Prozess oder Prozesse. Ich beziehe mich nicht auf Tabellen, die Tabellen, die Ende des Intervalls Status (Ende des Tages, Ende der Zahlungsperiode usw.) reflektieren sollen. In den meisten Fällen ahmt das Schema der Importiertabellen eng einen Anwendungsdatentyp (en), wie Kunde oder Konto.

Mögliche Ursachen für dieses anti-Muster:

1) Business Unit Wand zwischen den Eigentümern der beiden Prozesse verhindert Prozess, der schreibt oder liest aus Staging modifiziert.

2) geringes Vertrauen in Prozess, der schreibt oder liest aus Staging-Entwickler führt Tabelle zu verwenden, um Datenverlust zu verhindern „falls etwas nicht“

3) Mangel an Wissen oder DGAS (keine ^% $ @) Haltung geben

War es hilfreich?

Lösung

Staging-Tabellen, wie Sie beschreiben, sind ein wesentlicher Bestandteil der meisten Data Warehouse oder BI-Umgebungen. Sie könnten, dass zuverlässige / elastische rpc argumentieren würde die gleiche Arbeit tun, aber ich glaube, Sie falsch sein würden.

Mit dem Daten in eine Staging-Tabelle ziehen, sind Sie es aus der Produktionsumgebung, die möglicherweise weitere Berechnung, Zusammenfassung, Re-Index, Re-Keying zu tun, und so weiter, die meisten davon sind acheived ‚in Datenbank ‘. Ersetzen dieser mit einem RPC Sie die Code-und CPU-Zyklen aus der DB in Bewegung sind und in einem App-Server für keinen wirklichen Nutzen. Zum Beispiel hat ein App-Server eine viel höhere Chance von Abstürzen - Sie können nicht (leicht) ein RPC-Rollback

.

Natürlich gibt es viele Möglichkeiten der Datenverschiebung zuverlässig zwischen Systemen, Staging-Tabellen nur zufällig eines der am einfachsten sein, die meisten performant, zuverlässig und in baulich billigsten, bedeuten nicht immer, sind sie der richtige Ansatz - aber mehr als oft nicht.

Andere Tipps

Warum sollten sie ein Anti-Muster sein? Staging-Tabellen sind unglaublich nützlich, um einen Empfangsdienst von einem Verarbeitungsdienst zu entkoppeln. Wenn zwei solche Dienste entkoppelt sind Sie wesentlich unempfindlicher Fehler und Netzwerkfehler zu verarbeiten, da alle Nachrichten in der Staging-Tabelle gespeichert werden.

Die einzige wirkliche Zeit, die ich gesehen habe, ist für Grund Berichterstattung, wenn denormalized Tabellen verwendet werden, um Daten zu halten, während ein Bericht generiert wird. Ich glaube nicht, es ist ein Problem für diese Verwendung.

Meine erste Antwort ist ja, aber es ist meist nur wegen meiner Situation - Ich kann unterschiedlich sein. Wir haben ein System, in dem einige relativ zeitkritische Informationen von einer Befehlskomponente zu einer Empfängerkomponente gehen muss. Die Befehlsinformationen werden in einer Datenbanktabelle gesetzt und dann der Empfänger Umfragen die Tabelle für Updates. Das ist schrecklich. Sie taten es so gibt es eine Liste der Befehle in der Datenbank sein würde, aber es endet nur der eigentliche befehl macht ewig dauern, und die Entkopplung bewirkt manchmal den Empfänger mit der Datenbank nicht synchron sein.

Ich würde eher ein EMS (wie JMS) übertragen, die Nachricht zu einem Thema sehen, dass sowohl der Empfänger als auch eine Datenbank Inserter hören, oder eine Warteschlange von Kommandant zum Empfänger, und dann einen Status Hörer des Empfänger benachrichtigt seine setzen Status in der Datenbank.

Ich kann nicht warten, dass Code zu beheben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top