Je conçois un système à partir duquel je synchroniserai les données d'entreprise à partir de l'appareil mobile (qui a une application intégrée) qui génère des données et les renvoie au serveur. Chaque ligne synchronisée génère un journal d'entreprise spécifique dans la base de données.
Si ce que je synchronise génère des données avec une date (dans les données de synchronisation) inférieure à la dernière date de modification de mes données d'entreprise, je dois l'ignorer et ajouter simplement la base de données de connexion. Une fois les données téléchargées traitées, les données sont extraites de la base de données et téléchargées sur l'appareil.
En raison de ce téléchargement juste après l'écriture, la synchronisation doit être synchrone. Il est toujours possible d'avoir un modèle de lecteur / écrivain si quelque chose comme ça vaut suffisamment pour remplacer ma solution existante. Le plus important est de pouvoir télécharger des données à jour. Ces données sont récupérées dans leur ensemble, il n'y a pas de différence implémentée pour le moment (cela peut venir plus tard mais ce ne sera pas un problème).
Je peux avoir plusieurs synchronisations sur le même objet métier en cours d'exécution, c'est peu probable mais cela peut arriver et je préfère pouvoir le gérer. La synchronisation devrait durer quelques secondes mais pas quelques minutes, à moins d'utiliser l'application mobile intégrée sans resynchronisation pendant quelques jours.
Le volume de données synchronisées ne devrait pas être important, ni le processus de synchronisation.
Donc, je finis par utiliser une exclusion mutuelle sur ma méthode de synchronisation, plus précisément, j'utilise Java et je mets une synchronisation sur la méthode d'écriture et non tout le processus de synchronisation pour ne pas bloquer la synchronisation en lecture seule.
J'aimerais savoir :
- Si cela a du sens? Tant que le volume et la durée du processus de synchronisation sont toujours acceptables.
- De manière générale, quels concepts dois-je examiner. Bonus: s'il y a une implémentation de ces concepts dans un module Spring.