AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Synchronisation zwischen Datenbanken - Ideen?
Thema durchsuchen
Ansicht
Themen-Optionen

Synchronisation zwischen Datenbanken - Ideen?

Ein Thema von jf_stgt · begonnen am 30. Mai 2011 · letzter Beitrag vom 31. Mai 2011
Antwort Antwort
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Synchronisation zwischen Datenbanken - Ideen?

  Alt 31. Mai 2011, 00:19
Problem ist auch noch, dass mehrere Windows Rechner (Firebird) die gleiche MySQL Datenbank synchronisieren. Eine Änderung an Platz1 wird dann auf Platz2 verteilt usw.
Kurze Frage, damit ich das korrekt verstanden habe: Du synchronisierst EINE Firebird-DB (Win-Client) mit EINER MySQL-DB (online), oder MEHRERE Firebird-DB's (eine pro Client) mit EINER MySQL-DB?

Sollte letzteren der Fall sein, muß ich fragen: Wieso? Ist doch Quatsch!

Ich denke aber, der erste Fall wird zutreffen sein, oder?
Dann stell ich Dir die Frage: Wieso synchronisieren die einzelnen Win-Clients die MySQL-DB?
Wenn jeder Client die MySQL-DB synchronisiert, muß das (vom Gefühl her schon) in die Hose gehen!

Die Idee von SX2008 würde ich _so_ eher nicht verfolgen.
Einen Hashwert über die Adresse zur Synchronisation von Terminen würde ich nicht verwenden. Das Eine hat (im Prinzip) nichts mit dem Anderen zu tun! Adressen können sich ändern! Und das tun sie heufiger, als man als Entwickler denkt.

Selbst wenn man sagt, Okay, der Hashwert wird einmalig erzeugt, beim Anlegen beispielsweise. Die Praxis zeigt, das der EndNutzer gern im Eifer des Gefechtes (Telefonat, Kundengespräch usw.) nur einen Namen (z.B. "Frau Müller") als Adresse anlegt, evtl. einen Termin dazu, und erst später die komplette Adresse nachträgt. Den EndNutzer zur Eingabe der komplette Adresse zu "zwingen" ist eher kontra-produktiv und das Thema wird schnell auf wieder auf deinem Desktop liegen.

Dein DB-Konzept zur Synchronisation hört sich recht gut an.
Was ich allerdings ändern würde, wäre das nicht die Clients die Synchronisation der MySQL-Db vornehmen, sondern das das Ganze an einer zentralen Stelle passiert. Das könnte ein System-Dienst auf dem lokalen DB-Server übernehmen.

Dann brauchen deine Termine einen eindeutigen ID. Deshalb verpasst du den Terminen neben dem Zeitstempel, der die letzte Änderung des Termins beschreibt (nennen wir ihn Änderungsstempel), einen weiteren Zeitstempel, der die Erstellung des Termins beschreibt, mit einer zusätzlichen Kennung in welcher DB der Termin erstellt wurde. Den nennen wir "Erstellstempel" oder einfach ID, dann das wäre dann einer.
Wichtig: Für beide Zeitstempel nutzt du die Zeit des jeweiligen DB-Servers, nicht die des Clients! D.h. im SQL-Statement Now()!!
Die zusätzlich DB-Kennung deswegen, weil die Zeiten der beiden DB's bzw. deren Server nicht zu 100% synchron sein werden.

Den Surrogatschlüssel ala Hashwert, den SX2008 beschreibt, den hättest du dann mit dem Erstellstempel, sprich ID, unabhängig von der Adresse. Und der ist mit Sicherheit eindeutig und enthält sogar mehr Information!

Kurz um: Lass die Synchronisation von einem zentralen Dienst auf dem lokalen DB-Server übernehmen und Dir dürfte kein Termin mehr durch die Lappen gehen. Dadurch, das nun jeder Termin einen eindeutigen ID (Erstellstempel) besitzt, entscheidet der Änderungsstempel, welcher Termin "Master" ist.

Geändert von gmc616 (31. Mai 2011 um 01:06 Uhr) Grund: Noch mal kurz durchdacht ... so sollte es passen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz