Konzeption von Synchronisation/Replikation von Daten(banken)
10. Mai 2006, 15:48
Hallo zusammen,
für ein Projekt muss ich folgendes realisieren:
1. Es gibt ein oder mehrere abgesetzte Clients auf unterschiedlichen PCs. Diese laufen unabhängig voneinander.
Regelmässig wird eine Internetverbindung aufgebaut und die Clients kommunizieren mit dem Server.
2. Es können auch auf dem Server Daten eingegeben werden.
Nehmen wir der Einfachkeit halber Kundendaten.
Meine Frage ist nun wie kann die Synchronisation ablaufen.
Ich will es nicht technisch wissen, sondern konzeptionell.
Man unterscheidet
a) Neu anlegen von Kunden (NEW)
b) Ändern von Kundendaten (UPD)
c) Löschen von Kunden (DEL)
Ich habe mir folgende Varianten/Konzepte überlegt:
I.) Jeder neue Eintrag bekommt zusätzlich in einer Art "todo" Tabelle ein Hinweis dass dieser Datensatz verändert ist. Meldet sich nun ein anderer Teilnehmer am Server an, durchsucht er die todo Liste und weiß z.B. NEW #4, UPD #10, DEL #15.
Wenn er die Daten abgeholt hat, löscht er die todo Liste.
Nachteil: Sehr aufwändig und jeder Client bräuchte eine eigene Todoliste.
II.) Oder es gibt keine zusätzlichen Tabellen und bei jedem Eintrag in der Kundenliste gibt es eine Spalte Zeitstempel. Bei jeder Änderung / Neu hinzufügen wird auf dem Server der Zeitstempel aktualisiert.
Die Clients merken sich wann sie das letzte Mal synchronisiert haben und können so sehen dass der Datensatz sich verändert hat/neu dazugekommen ist.
Aber was ist wenn man auf dem Server einen Kunden löscht? Dann fehlt ja dieser Eintrag auf dem Server, der Client bekommt nicht mit dass der Satz fehlt und das sync. klappt nicht mehr.
Man dürfte also nichts mehr löschen sondern den Satz nur als "GELÖSCHT" kennzeichnen.
Was habt ihr noch für Ideen/Konzepte?
Gruß
Riese
|