2009-01-16 8 views
9

Ich habe eine vorhandene SQL Server 2005-Datenbank, die unsere Buchhaltungs-/Inventaranwendung ausführt. Wir suchen nach einem neuen Online-Bestell-Framework, das eine eigene Datenbank hat.Die beste Technologie zum Synchronisieren von Daten zwischen verschiedenen Datenbankschemas?

Wenn wir dieses neue Framework verwenden, müssen wir die Online-Bestelldaten (Lagerbestand, Preise, Bestellungen, Kunden) - fast in Echtzeit - in unsere bestehende Inventardatenbank übertragen. Die Übertragung von Daten muss nicht in Echtzeit erfolgen, sondern muss schnell erfolgen. Beide Datenbanken werden in SQL Server sein.

Meine Frage ist also ... Was ist der beste Weg, um Daten zwischen zwei Datenbanken hin und her zu übertragen, mit unterschiedlichen Schemas?

Replikation? SSIS? Was würdest du vorschlagen und warum?

Jede Hilfe wäre willkommen!

Antwort

8

Persönlich würde ich so schnell wie möglich von diesem Albtraum weglaufen. Da Sie diese Online-Bestellung noch nicht gekauft haben, würde ich vorschlagen, dass die Daten synchron mit der bestehenden Anwendung zu halten, ein guter Grund ist, dies nicht zu tun. Wenn Sie dies kaufen, werden Sie ewig bedauern, wie mucked Ihre Daten werden und wie viel Zeit und Geld Sie ausgeben, um die Dinge richtig funktionieren zu lassen. Dies ist eine Katastrophe, die darauf wartet, passiert zu sein. Am Ende wird es Leute geben, die angeblich Gegenstände in Iventory bestellen, wenn es keine im Lager gibt. Mach das nicht. Dies ist eine Garantie für verärgerte Kunden und verärgerte Manager. Weitaus billiger im Laufe der Zeit zu mieten einige Entwickler, um Ihre eigenen Online-Bestellung, die Zugriff auf Ihre Datenbank. Wenn sie über Ihre Einwände weitermachen, würde ich meinen Lebenslauf aktualisieren.

+0

Sie verbalisieren meine Ängste, mehr Zeit damit zu verbringen, den Code zu schreiben (und zu verwalten), um die Daten zu synchronisieren - als würde ich tatsächlich die Webanwendung selbst schreiben! – Clinemi

0

Replikation funktioniert gut, und wenn es zwei Art und Weise ist, könnte es die einzige sinnvolle Option sein, da die Konfliktlösung eingebaut ist.

Wenn Sie Einbahn gehen, SSIS oder Trigger auf Tabellen fein würde, und würde die Daten in Echtzeit (für Trigger) oder in dem von Ihnen gewünschten Intervall (SSIS) übertragen. Der Vorteil von SSIS besteht darin, dass es sich um einen Hintergrundprozess handelt, während Trigger potenziell Transaktionen auf der Angebotsseite aufhalten könnten, während sie die Daten pushen.

Wenn Sie große Datenmengen verschieben möchten, gibt es andere Produkte, die das für Sie erledigen können. Wenn es jedoch nicht zu viele Daten sind, sollte eine Lösung mit SQL Server-Tools alles Notwendige tun.

1

Aus eigener Erfahrung würde ich Replikation nur verwenden, wenn es keine andere Wahl gäbe. Sie müssen es für jede Schemaänderung abreißen und es tendiert dazu, einfach zu explodieren.

Dafür würde ich höchstwahrscheinlich SSIS verwenden. Es ist ziemlich einfach, ein Transformationspaket zu erstellen und relativ einfach zu warten.

11

die Geschäftsregeln sind die Hard Part

One-way sync? Zwei-Wege-Synchronisierung? Echtzeit-Push? Nächtliche Updates? Dump und neu laden? Vergleichen und aktualisieren? Konfliktlösung? Welche Seite gewinnt? Read-only-Informationen in eine Richtung schieben und Informationen auf die andere Art bestellen? Was ist mit Änderungen/Stornierungen/etc? Werden Auftragsstatus zurückgeschoben?

Sie können sehen, wohin ich hier gehe. Technologie ist eine zweitrangige Frage.

Aufgrund des Problems der Geschäftsregeln und weil die beiden Systeme unterschiedliche Schemas (und unterschiedliche Zwecke) haben, handelt es sich hierbei nicht um eine Standarddatenverschiebung und die meisten "Standard" -Antworten (Replikation, Protokollversand usw.) sind vom Tisch.

Es gibt Frameworks da draußen entworfen, um dabei zu helfen, wie Microsoft BizTalk oder Scribe Insight. Diese sind jedoch umständlich und teuer.

Es ist nicht allzu schwierig, ein benutzerdefiniertes Queuing-System zu erstellen, das entweder auf SQL-Triggern oder geplanten Pushs (abhängig von Ihren Anforderungen) in C# oder Ihrer bevorzugten Sprache basiert. Das ist wahrscheinlich der Weg, den ich gehen würde. Es würde wahrscheinlich eine dritte "Transfer" -Datenbank beinhalten, um die Warteschlange der von einer Seite vorgenommenen Änderungen zu halten, und ein Modul, um die Geschäftsregeln anzuwenden und die Daten an die andere zu übertragen.

+0

Ja, es gäbe Geschäftsregeln, also sind Ihre Punkte bezüglich Replikation und Protokollversand gut gewählt. Bestellungen würden von der Framework-Datenbank kommen, und alles andere würde zum Framework gehen. Angepasster Code für die Warteschlange oder SSIS sehen so aus, als könnten sie für dieses Szenario funktionieren. – Clinemi

+0

Danke für Ihre Eingabe. Ich gab Ihnen eine Stimme, weil Ihre Punkte sehr hilfreich waren, um meine Entscheidung zu treffen, keinen Rahmen zu verwenden. – Clinemi

Verwandte Themen