Frage

Wir sind in den Prozess der Ersatz eines legacy-Systems.Es geht um einen Zeitraum von Zeit, sowohl mit den Anwendungen, die im tandem.Der Benutzer wird in der Lage sein zu verwenden Sie entweder das system und die Herausforderung besteht darin, in der Lage zu halten Ihre Datenbanken in sync mit jedem anderen.

Das neue system ist ASP.NET und die legacy VB6.Beide laufen auf einer SQL Server-Datenbank.Es ist unklar, in dieser Zeit, wenn die Datenbanken auf demselben server Zimmer, geschweige denn das gleiche Land.

Die beiden Lösungen auf dem Tisch, so weit sind:

  1. Web-services, sitzen auf jeder Maschine und jeder ist aufgerufen, die von der anderen Anwendung.
    • Müssen Sie die Save-Methode in der Basisklasse(N?) für die systemeigene Objekte.Dies ist jedoch invasiv und könnte ein problem werden, wenn es um schalten Sie es aus.
  2. Ein einzelner windows-Dienst, der Umfragen jede Datenbank und arbeitet heraus, was geändert und leitet angepasst updates.

    • Notwendigkeit einer änderung des schemas in beiden Anwendungen, um sicherzustellen, dass Sie eine LastModified (DateTime) für alle Tabellen, so dass wir tun können, ist eine periodische WÄHLEN Sie in jedem bestimmten Intervall.

Beide Lösungen scheinen vernünftig.Beide Lösungen haben vor-und Nachteile.Das Unternehmen gebeten hat, nicht mehr als 2 Sekunden Verzögerung(!) zwischen dem Update eines system-und sehen es in der anderen.Das ist möglicherweise ein stretch-Ziel, aber es ist etwas zu Streben.

Andere wurden vorgeschlagen, aber abgelehnt (ich bin bereit, noch einmal überdenken) sind:

  • Datenbank-Trigger (blugrh)
  • BizTalk oder andere bus (scheint wie ein Vorschlaghammer und zu Komplex für eine übergangs-Lösung)
  • Alle änderungen an den gespeicherten Prozeduren (noooo.)
  • SSIS (weiß nicht genug über dieses noch)

Schätzen, alle Gedanken, die Sie haben.

EDIT:N. B.Die schemas sind völlig unterschiedlich.

War es hilfreich?

Lösung 4

Am Ende wurde dies mit einem Webservice gelöst. Es funktionierte wirklich gut.

Andere Tipps

2 Sekunden, das ist ein wirklich enger Zeitplan, und ich vermute, dass Ihre Windows-App-Lösung einfach nicht schneiden könnte, nicht, wenn es Hunderte von Änderungen oder etwas zu einem Zeitpunkt, und die Abfragezeit hat fast seine jede Sekunde zu hoffen, dass es innerhalb von 2 zu machen.

Sind die Datenbanken die gleiche Struktur verwenden? Wenn ja, ich bei der Umsetzung Replikation aussehen würde.

Bearbeiten

Nach dem Kommentar und zusätzlich, dass die Schemata ganz unterschiedlich sind, muß ich sagen, dass ich wirklich sehe zwei Sätze von Operationen.

  1. Ändern Sie die Optionen zur Datenspeicherung in der App-Einsätze / updates / löscht in beiden Tabellen zu machen. Vorteil: Sofort, kein externer Prozess zu teilen. Nachteil:. Haben den gesamten Code zu modifizieren, hart usw. deaktivieren

  2. Erstellen Sie eine Sync-Anwendung, wie Sie erwähnt geänderten Daten zu synchronisieren. Vorteil: einfach deaktivieren nach der Übertragung erfolgt. Nachteil: sehr komplex besonders zu schreiben, wenn es eine große Anzahl von Tabellen. Auch nicht so schnell, 2 Sekunden wird sich sehr schwer zu erreichen

Persönlich würde ich die Idee der Benutzer ablehnen unerwuenscht entweder mit System. Wie wollen Sie das Problem beheben, wenn der Benutzer 1 Datensatz geändert 1 auf System 1 und Benutzer 2 geändert Datensatz 1 in einer anderen Art und Weise auf System 2?

Wenn Sie darüber hinaus die Menschen nicht verlangen, das neue System zu verwenden, werden sie nicht. Widerstand gegen Veränderungen ist sehr, sehr stark in den meisten Organisationen.

würde ich vorschlagen, anstatt dass Sie die neue Systemeinführung und erfordern alle, es zu benutzen und stündlich Daten zu dem alten System, falls senden Sie aus irgendeinem Grunde wiederherstellen müssen.

Ich sehe keinen vernünftigen Weg, um ein 2 Sekunden Synch zu bekommen. Das ist eine lächerliche Forderung und die Business-Seite sollte so in aller Deutlichkeit gesagt werden.

Manchmal muss man nur wehren, wenn Busines Benutzer unzumutbar etwas wollen.

Was Sie beschreiben, hier fühle ich mich wie in der Mitte von einem Alptraum!Ich denke, Sie sollten erst anfangen, machen jedem klar, dass es unmöglich ist (oder zumindest extrem teuer) zu denken sein zu können, erlauben Sie den Benutzern, update alle die Daten sind durch 2 unterschiedliche Anwendung mit 2 verschiedenen Datenbanken während des gesamten übergangsprozesses!Ich bin nicht einmal reden über die 2-Sekunden-Verzögerung ...

Nach mir, die grundlegende Strategie sollte sein, allmählich wechseln Sie Daten aktualisieren, die Rechte und Möglichkeiten von der alten auf die neue app.Die Benutzer werden in der Lage zu sehen die Daten von beiden Seiten, aber Sie werden in der Lage zu aktualisieren, die nur durch eine der apps.

(incidentaly, diese Methode wird auch erzwingen, dass die Benutzer zu Schalter nach und nach auf die neue version, die Vermeidung erwartet und lästige Widerstand Problem bereits ausgesetzt durch @HLGEM)

Sobald diese Regel ist ganz klar akzeptiert, könnte Sie dann implementieren Sie die folgenden Schritte aus.

  1. Alle Verfahren ermöglicht die übertragung von Daten aus legacy-Datenbank in neue Datenbank.Ich denke, Sie werden müssen laufen Sie ein paar mal in den nächsten Monaten...
  2. Alle Verfahren erlauben Daten transfer, die anderen Weg (reverse Daten übertragung)
  3. Hier sollte man sich identifiziert haben, homogenen Gruppen von Tabellen als verschoben werden können, zusammen.Zusammenführen vorherigen code in einer Weise, dass Sie für jede dieser Gruppen eine "Daten-transfer-Verfahren" und einem "reverse transfer" ein.

Dann für jede dieser Gruppen

  1. Setzen Sie Ihre update-Restriktionen durch code oder Datenbank-Ebene
  2. Führen Sie Ihre "Daten übertragen" - Verfahren
  3. Organisieren Sie Ihre "reverse transfer" - Verfahren, das als trigger in der neuen Datenbank

Ich denke, die erste Art von Daten werden Sie in der Lage zu übertragen werden, um Listen enthalten keine Fremdschlüssel.

Auf diese Weise arbeiten, werden Sie allmählich wechseln von einer situation, wo Sie haben

  • Lesen/schreiben legacy-app + Lesen-nur neue app

zu

  • nur-lese-legacy-app + Lesen/schreiben neue app.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top