Pregunta

Necesito crear un proyecto en el que haya dos bases de datos locales y remotas. La base de datos remota debe sincronizarse diariamente con la base de datos local que refleje los cambios realizados en la base de datos local. Estoy usando JAVA La base de datos es ORACLE. Tengo un código JAVA / JPA que realiza operaciones CRUD en la base de datos local. Cómo sincronizar los cambios en la base de datos remota.

¿Fue útil?

Solución

No haría esto en Java, pero buscaría mecanismos / herramientas de sincronización de bases de datos Oracle nativas. Esto lo hará

  • sea más rápido de implementar
  • ser más robusto
  • tener eventos de replicación más rápidos
  • sé más 'correcto'

Otros consejos

Mire algunos productos de sincronización. SQL Anywhere de Sybase donde trabajo es uno de esos productos. Es posible que pueda obtener una copia de desarrollador / evaluación que puede usar para explorar sus opciones. Estoy seguro de que Oracle también tiene algo similar.

La idea básica es poder rastrear los cambios que ocurrieron en la base de datos central. Esto normalmente se realiza manteniendo una marca de tiempo para cada fila. Durante la sincronización, la base de datos remota proporciona la última hora de sincronización y el servidor le envía todas las filas que han cambiado desde entonces. Tenga en cuenta que las filas que se han eliminado en la base de datos central necesitarán un tratamiento especial para garantizar que se eliminen de la base de datos remota.

Una verdadera sincronización bidireccional es mucho más compleja. También debe cargar los cambios desde la base de datos remota a la central y también deben implementarse algunas estrategias de resolución de conflictos para los casos en que la misma fila se ha cambiado en la base de datos remota y central de manera incompatible en los dos.

El problema general es demasiado complejo para explicarlo aquí, pero espero haber podido proporcionar algunos consejos útiles.

El problema es que lo que está pidiendo puede variar desde moderadamente difícil (para un sistema simple, no muy robusto) hasta un producto muy complejo que podría mantener ocupado a un pequeño equipo durante un año, según los requisitos.

Es por eso que las otras respuestas decían "Encuentra otra manera" (básicamente)

Si tiene que hacer esto para una tarea de clase o algo así, es posible, pero probablemente no será rápido, robusto o fácil.

Necesita software de servidor en cada lado, una forma de traducir tablas desconocidas a datos que puedan transferirse a través del cable (junto con suficientes metadatos para volver a crearlos en el otro lado) y probablemente querrá realizar un seguimiento de los cambios en la base de datos (tal vez con un indicador o marca de tiempo) para que no tenga que enviar cada registro cada vez.

Es un problema bastante difícil que realmente no podemos ayudar mucho. Si tuviera que hacer eso por un cliente, le citaría al menos un año de trabajo para que sea incluso moderadamente confiable.

Buena suerte

Oracle tiene una sofisticada funcionalidad de replicación para sincronizar bases de datos. Obtenga más información. .

De sus comentarios parece que está usando Oracle Lite: esto admite la replicación, que se cubre en la documentación Lite .

Nunca trabajé con él, pero http://symmetricds.codehaus.org/ podría ser útil

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top