2016-06-20 9 views
1

Ich bin verantwortlich für die Synchronisation von Daten von einem neuen System zu einem alten System. Ich verwende SSIS 2012 und frage mich, was die beste Lösung ist. Ich muss diese Datensynchronisierung für neue Datensätze, geänderte Datensätze und gelöschte Datensätze im neuen System durchführen. Die Datensynchronisation ist eine Möglichkeit und muss so nah wie möglich an Echtzeit sein. Sollte ich CDC in der neuen Datenbank oder eine Nachrichtentabelle aus der Quellanwendung verwenden, um mir den Typ der vorgenommenen Änderungen mitzuteilen, dann verwende eine gespeicherte Prozedur oder sisis mit separaten Stagingtabellen?Datensynchronisation zwischen neuer und alter Datenbank

Ich muss diesen Prozess für ein Jahr laufen lassen. Außerdem werden die Quell- und Zielstrukturen unterschiedlich sein, daher erwarte ich viele Lookups, Mappings und Transformationen in diesen Paketen.

+0

Sind die zwei Datenbanken auf verschiedenen Servern? Wie lange musst du sie synchronisiert halten? Ist es das ganze Schema oder nur einige Tabellen? Sind die Strukturen ähnlich oder haben Sie viele Nachschlagevorgänge, um Daten zu konvertieren? – Mike

+0

Ja auf verschiedenen Servern. Ich muss sie für ein Jahr synchronisiert halten. Tabellenstrukturen unterscheiden sich so viele Lookups, Mappings und Transformationen. –

+0

Sie werden das also 3 Jahre lang tun! Welche Art von Änderungsvolumen hast du? – Mike

Antwort

1

Hier sind einige Dinge aus meiner Erfahrung zu berücksichtigen.

  • , wenn Sie sie nicht hinzufügen, haben bereits eine letzte geänderte Datetime-Spalte zu jeder Tisch. Stellen Sie sicher, dass es automatisch auf getdate() verweist. Dieser Trigger kann die Löschungen auch in einer lokalen Tabelle für die periodische Übertragung in die Ziel-Staging-Tabelle erfassen. (Wenn das nicht möglich ist, können Sie eine "lokale" Tabelle mit den Daten der letzten X Monate haben und mit ihr vergleichen, um Änderungen zu erkennen. Vielleicht speichern Sie den Primärschlüssel und eine Prüfsumme, die Sie mit der Prüfsumme aus live vergleichen können)

  • Erstellen Sie alle Nachschlagetabellen in der alten Datenbank oder in einer separaten Datenbank, so dass Sie eines Tages alles abschalten können. Auf dem neuen Server einen separaten db betrachten Sie Ihre Import Importiertabellen und die gespeicherten beschafft zu halten, die die tatsächlichen Einfuhren tun

  • -Upgrade die alte Datenbank eine bessere Leistung von Fähigkeiten zu bekommen - oder es alt und langsam lassen, so dass Sie haben, um es in Rente zu gehen!

  • Ich weiß nicht, CDC, so kann ich nicht beraten, aber ich habe dies auf die harte Art mehrmals getan, so habe ich Narben und jedes Mal aus dem vorherigen gelernt.

  • Ich hätte eine Tabelle, um Ihre letzte Synchronisationszeit in einer Reihe für jede Tabelle zu halten. Anschließend können Sie eine Ansicht oder Abfrage erstellen, die auf Ihre Importiertabellen

  • In Staging db kopiert werden muss, erstellen sprocs, dass jeder Tisch des Merge

  • hoffentlich haben Sie Flaggen auf den Tabellen löschen oder wenn kann unordentlich werden. Möglicherweise benötigen Sie Trigger, um diese Daten zu kopieren, bevor sie ausgeführt werden. Sie könnten es dann in Ihren Staging-Tabellen markieren

  • bauen Sie das Extraktsystem und Zeitplan mit einer geeigneten Frequenz. Zeichnen Sie Metadaten auf, so dass Sie problemlos darüber berichten können.

  • Erstellen Sie ein separates Importsystem mit Berichterstellung. Diese Seite kann schwierig sein, die Abhängigen in die richtige Reihenfolge zu bringen.Einsatz SSIS zu steuern, um die Reihenfolge der als Tabellen importiert werden, aber man könnte es einfacher zu entwickeln und zu testen finden, wenn die tatsächlichen Einfuhren von Stored Procedures in Ihrer Import Datenbank

  • betrachten halten die Staging-Datenbankdaten aber Gebrauch gemacht werden Zeitstempel zu zeigen, wenn importiert/aktualisiert/gelöscht Änderungen (sowie die Datumzeit der Änderung im Quellsystem) für den Fall angewandt werden, gibt es Probleme

    • Sie sagen, dass dies eine Einbahn Schnittstelle. Ich stimme zu, dass Sie das jetzt öffentlich sagen sollten. Gegen Ende dieses Projekts kann es jedoch vorteilhaft sein, die Schnittstelle umzukehren, sodass das alte System mit dem neuen System gefüllt wird (entweder für Codetabellen, damit sie in einer Linie bleiben, oder für einige der Transaktionsdaten).
  • In anderen Fällen können Sie Reise von Alt bis Neu und zurück zu alten oder N> O> N, runden müssen, so dass Sie die Primärschlüsseldaten aus beiden Systemen für andere Extrakte erhalten

  • wird die Zieldatenbank noch entwickelt? Wenn ja, involvieren Sie die Entwickler in Ihre Pläne und die Benutzer!

  • Stellen Sie sicher, dass sich Ihre Benutzer für alle Codetabellen, die sie zum Klassifizieren von Daten in der Anwendung verwenden, abgemeldet haben. Stellen Sie sicher, dass sie verstehen, wie Sie alte Codes neuen Codes zuordnen. Dies kann bedeuten, dass, wenn es sich um mehr als einen neuen Code aus einem alten Code handelt, diese manuell aktualisiert werden müssen. Zum Glück haben Sie die Metadaten behalten, sodass sie einen täglichen Bericht haben können, damit sie wissen, was sie überprüfen müssen!

Viel Glück

+0

Cdc ist Change Data Capture. Eingeführt in Sql Server 2008. –

+0

Wirklich gute Tipps, da die Quellsystemtabellen kein letztes aktualisiertes Datum für jede Tabelle haben, und ich mehrere Statusänderungen für einige Tabellen ausarbeiten muss und nicht nur letzte Statusänderung für einen Datensatz. –

+0

Möglicherweise können Sie mehrere X-Minuten mehrere separate Export- und Import-Systeme haben, andere nur täglich oder nach dem Ende des Monats, solange Sie wissen, was wann wichtig ist. Sie können einzelne Änderungen verpassen, solange das System nach einem Update treu bleibt. – Mike

0

Die sauberste, einfachste Weg ist, die Transaktionsreplikation zu verwenden. Es ist nicht schwer einzurichten und wenn es sehr umfangreich ist, können Sie eine alte Maschine als Publisher verwenden, damit die Server möglichst wenig beeinträchtigt werden.

+0

Für meine Erbauung, adressiert Replikation ihre Notwendigkeit aus den Kommentaren von 'Tabellenstrukturen unterschiedlich, so viele Nachschläge, Zuordnungen und Transformationen' – billinkc

+0

Zustimmen. Nicht sicher, ob diese Lösung funktionieren würde. –