![]() |
Datenbestand / Master-Master-Sync
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen,
ich versuche gerade eine (gesunde) Logik zu entwicklen ... Umgebung: 2 Programme auf jeweils unterschiedlichen Rechner. PC (#1) PC (#2) Laufzeit: Jedes Programm schreibt in zyklichen Abständen ein Datenbestand in eine binär Datei. Datei (A) Datei (B) Problemstellung: Die beiden Programme (PC #1: A & PC #2: B) müssen jeweils die andere Binär-Datei auf ihre Aktualität prüfen, wenn ein Datenbestand nicht mehr aktuell (PC #1: A != PC #2: B) ist muss die inaktuelle-Datei mit der aktuellen Datei ersetzt werden Bedingung: Es darf kein Masterprogramm implmentiert werden, welches die eigentliche Überwachung vornimmt. Um das mal zu verbildlichen habe ich ein Screenshot angehangen. Hat jemand einen passenden Lösungsvorschlag? |
AW: Datenbestand / Master-Master-Sync
Nehmen wir an, die beiden Dateien sind aktuell synchron. Jetzt ändern beide Programme zur gleichen Zeit an ihrer jeweiligen Datei etwas. Welche gilt dann als aktuell?
|
AW: Datenbestand / Master-Master-Sync
Hallo Uwe,
das ist genau das Grundproblem, daher würde ich über den Zeitstempel gehen. Ist Änderungs-Zeit einer Datei (A||B) < Faktor X dann gilt diese als inaktuell und muss überschrieben werden Zeitstempl-Ansatz If timestamp(PC #1: A) < 1 min then copy PC #2: B > PC #1: A Es müssen also nicht die Inhalte ansich geprüft werden ... Hast du einen anderen Ansatz? |
AW: Datenbestand / Master-Master-Sync
Zunächst würde ich dies über eine Zentraldatei/Datenbank lösen.
Bleibt die Frage, waß passiert wenn beide zum genau gleichen Zeitpunkt schreiben wollen? Gruß K-H |
AW: Datenbestand / Master-Master-Sync
Wenn ich das richtig verstehe, dann sind die Änderungen von dem einen PC dann verloren, wenn die "aktuelle" Datei vom anderen PC übernommen wird?
Wie kommunizieren die PCs untereinander? |
AW: Datenbestand / Master-Master-Sync
Zitat:
|
AW: Datenbestand / Master-Master-Sync
Was ist dein Grundproblem? Ich vermute: Die PCs messen irgend etwas und mal ist der eine PC an und mal der andere, oder? D.h. der Normalfall ist das *entweder* A *oder* B aktiv ist.
Dann reicht es, beim Programmstart einmalig zu prüfen, ob die jeweils andere Datei aktueller als die eigene ist und die dann zu sich selbst kopieren:
Delphi-Quellcode:
In einer Konfigurationsdatei definierst Du jeweils 'TheOtherFile' und 'MyOwnFile'.
If Timestamp(TheOtherFile) > TimeStamp(MyOwnFile) + ThresHold then
Copy (TheOtherFile, MyOwnFile); StartTheMeasurements; Bei dieser Konfiguration könnte es auch reichen, ein gemeinsames Netzlaufwerk zu nehmen und dort einfach eine Datei zu beschreiben. Der 2.PC macht dann einfach nichts, solange der erste noch aufzeichnet. Bei einem andere Szenario (d.h. beide messen irgend etwas) würde das aber auch funktionieren, nur das man das Schreiben mit Sperrmechanismen schützen könnte. Dann überschreibt eben der eine die aktuellen Daten des anderen, oder hängt es hinten ran. Das nennt sich dann 'Datenbank' und ist eh die bessere Wahl. |
AW: Datenbestand / Master-Master-Sync
Zitat:
Auch mir scheint das ein klassischer Fall für eine DB zu sein, auch wenn es die Anforderung gibt, dass es kein 3. Programm zur Überwachung geben darf. Angenommen, es wird keine DB verwendet, wie soll das ein oder andere Detail gelöst werden: - Schreib/Lesevorgänge: Wie wird die Datei geschrieben? Sequentiell, vollständig, .. - Dateigröße: Ab einer gewissen Größe entstehen deutliche Laufzeiten für den Schreibvorgang, die Berücksichtigt werden müssen. - Daraus folgend sind ggF. beim Schreiben die jeweils andere Datei zu sperren o.ä. - .. weiteres? Das sind Probleme, für die Datenbanksysteme gemacht sind und die dort bereits gelöst sind. |
AW: Datenbestand / Master-Master-Sync
Zitat:
Da heißt es dann: Datenaustausch nur über NAS/FTP/Diskette ... friss oder stirb! |
AW: Datenbestand / Master-Master-Sync
Ja, mag ja sein. Dann muss man dem Kunden eben auch sagen, dass er die Wahl hat zwischen
a) liebevoll selbst gestrickt, entlang der Kundenanforderung und den 5 Problembereichen, die einem aus der eigenen Erfahrung und der Literatur über den Weg gelaufen sind. Hausgemachte Tests mit 2 Testern in 3 verschiedenen Szenarien. oder b) jahrzehntelang ausgereifte RDBMS Software seiner Wahl, auf Wunsch ohne Lizenzkosten, ACID konform, Transaktionskonzept, millionenfach betrieben und getestet, auf Wunsch auch mit Win8, 9, 10, 11, .. Garantie etc. pp. Als Beispiel für Variante a) würde ich die Sperrdatei der BDE nehmen. Ich glaub, da sind professionell direkt mehrere Probleme unberücksichtigt geblieben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz