Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Zwei SQLite Datenbanken synchronisieren - Strategie

  Alt 27. Feb 2010, 12:59
Das größte Problem dabei sind gelöschte Datensätze. Weil dieser dann auf der anderen Seite existiert und man dann nicht weiß, ob dieser dann gelöscht oder eben aus der anderen DB übertragen werden soll.

Ich habe soetwas gelöst, indem ich ein Protokoll erstellen lasse. In diesem Protokoll steht, die Tabelle, die Änderung (I, D, U), der Zeitstempel und der PK-Inhalt). Dieses Füllen wird über Trigger realisiert, somit ist es egal, wie man die Daten ändert (per Programm oder direkt in der DB). Das Sync-Tool schaut sich dann die Logtabelle an und kann dann die nötigen Änderungen durchführen, indem eben die eigentlichen Daten aus den zugehörgen Tabellen geholt und übertragen werden.
Bei diesem Vorgehen gibt es also nur eine Sync-Tabelle und wenn später noch mehr Tabellen syncronisiert werden müssen, so ist nur ein weiterer Trigger nötig.


Edit: Bei erfolgreicher Änderung, kann die zugehörige Protokollzeile gelöscht werden. Somit entsteht kein bleibendes Datenvolumen, nur solange, bis die Syncronisation durchgeführt wurde. Kann mal eine Änderung nicht durchgeführt werden, werde alle weiteren, die mit der nicht durchgeführten Änderung in Verbindung stehen, ebenfalls nicht durchgeführt. Trotzdem sind die Änderungen weiterhin bekannt und können später (bei z.B. Korrektur der DB-Struktur) durchgeführt werden. Das ist ziemlich wichtig, weil mir das regelmäßig passiert, dass ich mal etwas an der DB verändere und es garantiert auf der Gegenseite vergesse.
  Mit Zitat antworten Zitat