Muy a menudo en mi trabajo surge la idea de la sincronización de datos bidireccional entre sistemas de bases de datos. El ejemplo clásico son dos sistemas CRM ligeramente diferentes (por ejemplo, Raiser's Edge y Salesforce) y la necesidad de tener una sincronización bidireccional de los datos de contacto entre ellos.
Dejando de lado las consideraciones de la API, suponiendo que tenga una clave compartida para sincronizar, y pensando simplemente en el algoritmo / patrón que se va a emplear, esta es una tarea que a menudo es subestimada por los no técnicos.
Por ejemplo, debes estar atento a:
- ¿Puede detectar fácilmente qué registros han cambiado en ambos sistemas (o tendrá que comparar todos los registros entre los sistemas para detectar cambios)?
- Si va a realizar una sincronización de una vez cada N horas, cómo resolver los conflictos en los que el mismo registro cambia más o menos al mismo tiempo en ambos sistemas
- Si va a realizar una sincronización en tiempo real (es decir, una actualización en un sistema inmediatamente activa una actualización en el otro sistema) cómo manejar las divergencias a lo largo del tiempo debido a errores o fallas en el sistema
Personalmente, puedo pensar en formas de abordar todo esto, pero me pregunto si hay patrones, publicaciones o mejores prácticas bien conocidos a los que pueda referirme.