Sto progettando un sistema dal quale sincronizzerò i dati aziendali dal dispositivo mobile (che ha un'applicazione incorporata) che genera i dati e li rimanda al server. Ogni riga sincronizzata genera un registro aziendale specifico nel database.
Se ciò che sincronizzo genera dati con una data (all'interno dei dati di sincronizzazione) inferiore all'ultima data di modifica dei miei dati aziendali, devo ignorarli e aggiungere semplicemente il database di accesso. Una volta elaborati i dati caricati, i dati vengono recuperati dal database e scaricati sul dispositivo.
A causa di questo download subito dopo la scrittura, la sincronizzazione deve essere sincrona. È ancora possibile avere un modello di lettore / scrittore se qualcosa del genere vale abbastanza per sostituire la mia soluzione esistente. La cosa più importante è poter scaricare dati aggiornati. Che i dati vengano recuperati nel loro insieme, non ci sono differenze implementate al momento (potrebbe venire dopo, ma non sarà un problema).
Potrei avere più sincronizzazioni sullo stesso oggetto business in esecuzione, è improbabile ma può accadere e preferisco essere in grado di gestirlo. La sincronizzazione dovrebbe durare per alcuni secondi ma non per alcuni minuti, a meno che non si utilizzi l'applicazione mobile incorporata senza risincronizzazione per alcuni giorni.
Il volume dei dati sincronizzati non dovrebbe essere grande, né il processo di sincronizzazione.
Quindi finisco per usare una mutua esclusione sul mio metodo di sincronizzazione, più precisamente, sto usando Java e ho messo un metodo di scrittura sincronizzato e non l'intero processo di sincronizzazione per non bloccare la sincronizzazione di sola lettura.
Mi piacerebbe sapere :
- Se in 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.