AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbestand / Master-Master-Sync

Ein Thema von FAM · begonnen am 9. Jan 2015 · letzter Beitrag vom 12. Jan 2015
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Datenbestand / Master-Master-Sync

  Alt 9. Jan 2015, 10:54
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.771 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datenbestand / Master-Master-Sync

  Alt 9. Jan 2015, 11:00
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?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

AW: Datenbestand / Master-Master-Sync

  Alt 9. Jan 2015, 11:24
Wie kommunizieren die PCs untereinander?
Es gibt noch andere interessante Randbedingungen:
  • Sind es im Normalfall immer nur 2 PCs?
  • Läuft das Programm ständig?
  • Wie robust muss das Protokoll sein (Ausfall eines oder beider Rechner)?
  • Kannst du die Programmme ändern oder musst du ein zusätzliches Tool schreiben, dass die Synchronisierung übernimmt?

Geändert von BUG ( 9. Jan 2015 um 11:27 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Datenbestand / Master-Master-Sync

  Alt 9. Jan 2015, 13:37
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:
If Timestamp(TheOtherFile) > TimeStamp(MyOwnFile) + ThresHold then
  Copy (TheOtherFile, MyOwnFile);

StartTheMeasurements;
In einer Konfigurationsdatei definierst Du jeweils 'TheOtherFile' und 'MyOwnFile'.

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.

Geändert von Dejan Vu ( 9. Jan 2015 um 13:40 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Datenbestand / Master-Master-Sync

  Alt 10. Jan 2015, 08:08
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?

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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#6

AW: Datenbestand / Master-Master-Sync

  Alt 10. Jan 2015, 08:16
Das sind Probleme, für die Datenbanksysteme gemacht sind und die dort bereits gelöst sind.
Wenn ich das richtig beobachtet habe, müssen gerade unter den Delphianern einige mit Kunden arbeiten, die eine merkwürdige IT-Umgebung und einen kautzigem Admin haben, der dort alle Regeln macht
Da heißt es dann: Datenaustausch nur über NAS/FTP/Diskette ... friss oder stirb!
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Datenbestand / Master-Master-Sync

  Alt 10. Jan 2015, 08:30
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Datenbestand / Master-Master-Sync

  Alt 10. Jan 2015, 08:53
Möglichkeit 1:

Es wird ein Locking benötigt, der zuverlässig das Schreiben von nur einer Stelle zulässt.

Möglichkeit 2:

Erzeugen von einem Transaktionslog, was dann auf jede Datei angwendet wird.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Datenbestand / Master-Master-Sync

  Alt 10. Jan 2015, 09:14
Wenn ich das richtig beobachtet habe, müssen gerade unter den Delphianern einige mit Kunden arbeiten, die eine merkwürdige IT-Umgebung und einen kautzigem Admin haben, der dort alle Regeln macht
Die haben keinen Admin sondern einen Chef der die C..p liest.

Aber im Ernst, die Frage ist doch, welchen Zweck soll die Konstellation erfüllen? Da anzusetzen scheint mir u.U. sinnvoller als an Symptomen herum zu doktern.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
FAM

Registriert seit: 22. Dez 2014
47 Beiträge
 
Delphi XE Enterprise
 
#10

AW: Datenbestand / Master-Master-Sync

  Alt 12. Jan 2015, 07:14
Hallo Zusammen,

erstmal danke für eure antworten....

zu euren Fragen / Randbedingungen

- Schreib/Lesevorgänge: Wie wird die Datei geschrieben? Sequentiell, vollständig, ..
Vollständig

- Dateigröße: Ab einer gewissen Größe entstehen deutliche Laufzeiten für den Schreibvorgang, die Berücksichtigt werden müssen.
Dateigrösse max. 1 MB

- Daraus folgend sind ggF. beim Schreiben die jeweils andere Datei zu sperren o.ä.
nicht notwendig, den das eigentliche Beschreiben der Binär-Datei und der zu implmentierende Sync laufen parallel (Datei wird geschrieben und im Hintergrund - Thread?! - läuft der Sync respektive die Überwachung über Sync notwendig)

- Sind es im Normalfall immer nur 2 PCs?
ja,

- Läuft das Programm ständig?
ja

- Wie robust muss das Protokoll sein (Ausfall eines oder beider Rechner)?
wenn ein PC ausfällt soll der zweite einspringen

- Kannst du die Programmme ändern oder musst du ein zusätzliches Tool schreiben, dass die Synchronisierung übernimmt?
kann das programm ändern

Möglichkeit 1:

Es wird ein Locking benötigt, der zuverlässig das Schreiben von nur einer Stelle zulässt.

Möglichkeit 2:

Erzeugen von einem Transaktionslog, was dann auf jede Datei angwendet wird.
wie würdest du diesen Transaktionslog konzipieren/implmentieren?



Implementierungsgrund ist eine Daten-Redundanz:

2 PCs laufen ständig (in einem Netzwerk) und haben jeweils einen und den selben Client am laufen, die jeweiligen Clients beziehen von ein und der selben Quelle Daten und schreiben diese dann in eine *.dat Datei (2 x 1:1 Beziehungen - Client vs. OPC-Server).

Falls mal ein Client aus ist (z.B. Absturz) und er wieder angestellt wird, muss geprüft werden ob die Daten der *.dat (auf den PC welcher gerade abgestürzt war) "noch aktuell sind" > an dieser Stelle müsste dann der Sync laufen (Copy *.dat von anderne PC). Eine andere Möglichkeit warum bedarf von einem Sync besteht ist wenn z.B. der Client die Daten vom OPC-Server nicht richtig lesen konnte ...

Auf beiden PC soll einfach eine 100% Datengleichheit bestehen, zu jeder Zeit.

Eine Datenbank ist auszuschliessen! (Kundenwusch)

Geändert von FAM (12. Jan 2015 um 07:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 19:41 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