Zufällig habe ich für unsere 24x7 Finanzdaten gleiches Problem
1. kann bei uns jeder Client mit 2 Servern arbeiten
2. wenn es keine 2 kompletten Server gibt, konfiguruieren wir einen "intelligenten" FifoProxyServer als Extraanwendung(ne Kombi aus Server und Client mit FiFoPuffer und (Re)Sync-Logik dazwischen)... (wegen der möglichen großen Datenmengen kann dieser lokale Fifo oft nicht auf dem gleichem Client (I)PC mitlaufen, wo die Daten getrackt werden)
"Optimal lösen" ist schwer zu beantworten, denn hier muss im State "GapOutOfSync" unterschieden werden,
-> ob solange noch nicht weitergereichte FiFo Pufferdaten lokal vorhanden, man aktuelle Daten weiter erstmal nur in den lokalen FoFo gehen
* Vorteil: die HauptServerdaten sind immer seitweit irgendmöglich vollständig und es gibt dort keine DatenGaps die wenig später wieder weg sind
* Nachteil: es dauert etwas bis nach den Pufferdaten wieder Livedaten in der HauptDB ankommen
=> mit recht wenig Aufwand sehr betriebssicher zu realisieren
-> oder wenn Verbindung "wieder steht" trotz "Gap"(Weil "noch nicht" alle Pufferdaten eingetragen sind) aktuelle Daten schon wieder in die HauptDB reingehen
* Vorteil: in der HauptDB kommen "schnellst möglich" wieder aktuellste Daten an
* Nachteil: in der HauptDB gibt es temporäre Datengaps, was zu unterschiedlichen (Auswerte)Ergebnissen bei wiederholter Datenabfrage führen kann
=> es braucht im Server und in allen Clients recht viel Aufwand die States Offline,OutOfSync,GapOutOfSync,InSync sauber zu handeln
Wir haben je nach Funktion des Abfrageclients beides und auch noch über 2 Server realisiert
- Monitor/Trigger Clients arbeiten nur mit den neuesten Daten ohne History, also ohne Probleme bei Datengaps
- History/Archiv Clients arbeiten nur mit den jeweils als "vollständig" markierten HauptDB Daten (alle Abfrageergebnisse sind hier bei wiederholter Abfrage gleich)
- nur Rule/Function Clients nutzen "alle" unter Beachtung der verschiedenen SystemStates(also spziell ausprogrammierte Logik mit sich später möglicherweise noch mal veränderlichen Ergebnissen sinnvoll umzugehen)