Sto progettando un sistema dal quale sincronizzerò i dati aziendali dal dispositivo mobile (che ha un'applicazione incorporata) che genera dati e li invia al server. Ogni linea sincronizzata genera un registro aziendale specifico nel database.
Se ciò che sincronizzo genera dati con una data (entro i dati di sincronizzazione) inferiore all'ultima data di modifica dei dati aziendali, devo ignorarlo e aggiungere semplicemente il database di accesso. Una volta elaborati i dati caricati, i dati vengono recuperati dal database e scaricati nel dispositivo.
A causa di questo download subito dopo la scrittura, la sincronizzazione deve essere sincrona. È ancora possibile avere uno schema lettore / scrittore se qualcosa del genere vale la pena sostituire la mia soluzione esistente. La cosa più importante è essere in grado di scaricare dati aggiornati. I dati vengono recuperati nel loro insieme, al momento non è implementata alcuna diff (potrebbe venire in seguito ma non sarà un problema).
Potrei avere più sincronizzazioni sullo stesso oggetto business in esecuzione, è improbabile ma può succedere e preferisco essere in grado di gestirlo. La sincronizzazione dovrebbe durare alcuni secondi, ma non alcuni minuti, a meno che non si usi l'applicazione mobile incorporata senza resync per alcuni giorni.
Il volume dei dati sincronizzati non dovrebbe essere grande, né il processo di sincronizzazione.
Quindi finisco per usare un'esclusione reciproca sul mio metodo di sincronizzazione, più precisamente, sto usando Java e ho messo un sincronismo sul metodo di scrittura, non sull'intero processo di sincronizzazione per non bloccare la sincronizzazione di sola lettura.
Vorrei sapere:
- Se questo modo ha senso? Fino a quando il volume e il tempo del processo di sincronizzazione sono ancora accettabili.
- In generale, quali concetti dovrei guardare. Bonus: se c'è una implementazione di questi concetti in un modulo Spring.