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?
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?