Ich entwerfe ein System, von dem aus ich Geschäftsdaten vom mobilen Gerät (mit einer eingebetteten Anwendung) synchronisiere, das Daten generiert und an den Server zurücksendet. Jede synchronisierte Zeile generiert ein bestimmtes Geschäftsprotokoll in der Datenbank.
Wenn das, was ich synchronisiere, Daten mit einem Datum (innerhalb der Synchronisierungsdaten) generiert, das unter dem Datum der letzten Änderung meiner Geschäftsdaten liegt, muss ich es ignorieren und einfach die Anmeldedatenbank hinzufügen. Sobald die hochgeladenen Daten verarbeitet sind, werden Daten aus der Datenbank abgerufen und auf das Gerät heruntergeladen.
Aufgrund dieses Downloads direkt nach dem Schreiben muss die Synchronisation synchron sein. Es ist immer noch möglich, ein Lese- / Schreibmuster zu haben, wenn so etwas genug wert ist, um meine bestehende Lösung zu ersetzen. Wichtiger ist es, aktuelle Daten herunterladen zu können. Da diese Daten als Ganzes abgerufen werden, ist derzeit kein Diff implementiert (es kann später kommen, aber das ist kein Problem).
Möglicherweise werden mehrere Synchronisierungen für dasselbe Geschäftsobjekt ausgeführt. Dies ist unwahrscheinlich, kann jedoch auftreten, und ich bevorzuge es, damit umgehen zu können. Die Synchronisierung wird voraussichtlich einige Sekunden, jedoch nicht einige Minuten dauern, es sei denn, Sie verwenden die eingebettete mobile Anwendung einige Tage lang ohne erneute Synchronisierung.
Es wird nicht erwartet, dass das synchronisierte Datenvolumen groß ist, ebenso wenig wie der Synchronisierungsprozess.
Daher verwende ich einen gegenseitigen Ausschluss für meine Synchronisationsmethode, genauer gesagt, ich verwende Java und setze eine synchronisierte Schreibmethode ein, nicht den gesamten Synchronisationsprozess, um die schreibgeschützte Synchronisation nicht zu blockieren.
Ich würde gerne wissen :
- Ob dieser Weg Sinn macht? Solange das Volumen und die Zeit des Synchronisationsprozesses noch akzeptabel sind.
- Welche Konzepte sollte ich allgemein betrachten? Bonus: Wenn diese Konzepte in einem Spring-Modul implementiert sind.