Estou projetando um sistema a partir do qual sincronizarei os dados corporativos do dispositivo móvel (que possui um aplicativo incorporado) que gera dados e os envia de volta ao servidor. Cada linha sincronizada gera um log de negócios específico no banco de dados.
Se o que sincronizar gerar dados com uma data (dentro dos dados de sincronização) inferior à data da última modificação dos meus dados comerciais, devo ignorá-los e apenas adicionar o banco de dados de logon. Depois que os dados enviados são processados, os dados são buscados no banco de dados e baixados no dispositivo.
Devido a esse download logo após a gravação, a sincronização deve ser síncrona. Ainda é possível ter um padrão de leitor / gravador se algo assim valer o suficiente para substituir minha solução existente. O mais importante é poder fazer o download de dados atualizados. Esses dados são buscados como um todo, não há diferenças implementadas no momento (podem vir mais tarde, mas isso não será um problema).
Eu posso ter várias sincronizações no mesmo objeto de negócios em execução, é improvável, mas pode acontecer e eu prefiro poder lidar com isso. A sincronização deve durar alguns segundos, mas não alguns minutos, a menos que você use o aplicativo móvel incorporado sem ressincronização por alguns dias.
Não é esperado que o volume de dados sincronizados seja grande, nem o processo de sincronização.
Então, acabei usando uma exclusão mútua no meu método de sincronização, mais precisamente, estou usando Java e coloquei um método de gravação sincronizado, não todo o processo de sincronização para não bloquear a sincronização somente leitura.
Eu gostaria de saber :
- Se assim faz sentido? Enquanto o volume e o tempo do processo de sincronização ainda forem aceitáveis.
- De uma maneira geral, quais conceitos devo examinar. Bônus: se houver alguma implementação desses conceitos em um módulo Spring.