Sincronizando bancos de dados cliente-servidor

Estou procurando algumas estratégias gerais para sincronizar dados em um servidor central com aplicativos clientes que nem sempre estão online.

No meu caso particular, eu tenho um aplicativo de telefone Android com um banco de dados sqlite e um aplicativo Web PHP com um banco de dados MySQL.

Os usuários poderão adicionar e editar informações no aplicativo de telefone e no aplicativo da web. Eu preciso garantir que as alterações feitas em um local sejam refletidas em todos os lugares, mesmo quando o telefone não puder se comunicar imediatamente com o servidor.

Não estou preocupado em como transferir dados do telefone para o servidor ou vice-versa. Estou mencionando minhas tecnologias específicas apenas porque não posso usar, por exemplo, os recursos de replicação disponíveis para o MySQL.

Sei que o problema de sincronização de dados cliente-servidor existe há muito, muito tempo e gostaria de obter informações - artigos, livros, conselhos etc. - sobre padrões para lidar com o problema. Eu gostaria de saber sobre estratégias gerais para lidar com a sincronização para comparar pontos fortes, fracos e trade-offs.

questionAnswers(5)

yourAnswerToTheQuestion