Tabellen Syncronisieren

fohnbit

Benutzer
Beiträge
21
Hallo!

Ich habe eine Datenbank im Web und eine lokal. Web ist mySQL und lokal ist MS SQL.
Beide halten Adressen von Kunden.

Auf beiden wird unabhängig gearbeitet. (Einfügen, löschen, ändern)

Ich muss nun beide Tabellen abgleichen. Gibt es hier ein "Best Practice" ?

Ich stelle mir das so vor:
dbLokal:
Ich füge eine neue Tabelle "sync" ein.
Spalten (idWeb, idLocal)

Die Tabelle im web hat (kann ich nicht ändern):
id, name, lastChange (id = Int)

Die Tabelle lokal hat (kann ich nicht ändern):
id, name, lastChange (id = GUID)

Vorgehensweise:
Ich lade alle drei Tabelle komplett in mein Programm (dbWeb, dbLokal und sync)

1. Schritt (alle löschen die es nicht mehr gibt):
delete in dbWeb when:
sync.idWeb ist nicht vorhanden in dbWeb
delete in dbLocal when:
sync.idLocal ist nicht vorhanden in dbLocal
(Wenn schon mal ein Sync erfolgt ist, steht die ID in der sync. Wurde danach lokal oder im web einer gelöscht, fehlt in der Datenbank dbLocal oder dbWeb die ID)

2. Schritt (Alle Aktualisieren oder neu anlegen):
Web Datenbank zuerst:
Insert "name", "lastChange"(on duplicate key update) in dbWeb when:
dbLocal.Id ist in sync vorhanden
dbLokal.lastChange > dbWeb.lastChange (When null = 1.1.1970)
Dann lokal:
Insert "name", "lastChange"(on duplicate key update) in dbLocal when:
dbWeb.Id ist in sync vorhanden
dbWeb.lastChange > dbLocal.lastChange (When null = 1.1.1970)

oder gibts hier schon andere, bessere Strategien?
 
Werbung:
Hallo!

1. Unterschiedliche Programme sollen den selben Adressenstamm haben
2. Ja, Referenzen gibt es und die muss ich berücksichtigen
3. Weil es 2 völlig unterschiedliche Programme sind und ich beide nutzen muss. Jedoch sollen diese eben den selben Adressenstamm haben
4. weil wenn der Eintrag noch nicht vorhanden ist, er NULL prüfen würde. Wußte nicht was er dann macht :)

Ich beschäftige mich ein bisschen mit Talend Open Studio. Eventuell versuche ich dort das zu machen. Oder sonst vb.net oder Java.

Danke!
 
:)

Nun, die eine Webapplikation nutzt mySQL und die lokale am Windows Server nutzt MS SQL.
Ich habe keine Lust ein Programm neu zu schreiben :)
 
Du solltest vieleicht die Tabelle in gleicher Form als Log Tabelle aufsetzen und alle Datensätze die durch deinen Sync geändert, gelöscht oder geschrieben werden sicherheitshalber mit Zeitstempel da rein donnern. Wenn alles läuft kann man das ja immernoch stoppen.

Abhängigkeiten auf diese Tabellen sind natürlich extrem wichtig, wie akreschmer schon sagte.

Ich würde vieleicht zwischen lastupdate durch User und lastsyncdate unterscheiden. Wie wird der Sync ausgelöst, manuell? Oder während an den Beständen gearbeitet wird?
 
Werbung:
Zurück
Oben