Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Replicación con Firebird 4 (https://www.clubdelphi.com/foros/showthread.php?t=95146)

CyberManolo 05-04-2021 11:00:47

Replicación con Firebird 4
 
Hola de nuevo.

Estoy intentando montar un ejemplo de replicación asíncrona (o si no hay más remedio, síncrona), maestro-esclavo con firebird 4, que al parecer es nativa y transaccional. No encuentro documentación y sobre todo ejemplos de como montarla.

Probé con Firebird 3.0 e IBReplicator, que se basa en la replicación de tablas, pero encontré inconvenientes graves como el siguiente:

Supongamos una tabla CABECERAS_FACTURAS que tiene un campo CONTABILIZADA de manera que cuando contabilizamos esa factura, genera el asiento contable correspondiente en otra tabla ASIENTOS y un trigger de dicha tabla de ASIENTOS pone el campo CONTABLIZADA=1 en la tabla de cabeceras y los triggers de la tabla CABECERAS_FACTURAS, a partir de entocnes ya impiden que dicha factura se pueda modificar. Esto ocurre casi de inmediato a la creación de la factura.

¿Que pasa cuando la replicación es asíncrona (pongamos por ejemplo un periodo de 5 minutos) e intenta replicar el proceso anterior? pues que cuando copia a la base de datos esclava el registro correspondiente de CABECERAS_FACTURAS, este ya va con el campo CONTABILIZADA=1. Entonces, al insertar el asiento correspondiente en la tabla ASIENTOS, el trigger de esta se encuentra la cabecera de factura ya contabilizada y genera un error, por el cual no se produce la replicación.

Se que alguien me podría decir que es cuestión de cambiar el trigger de la tabla de asientos para que si ve que el campo CONTABILIZADA ya está a 1, no intente cambiarlo. Es decir, replantear toda la base de datos pensando en la replicación. Esto es complicado en una base de datos que tiene más de 500 tablas y miles de triggers.

Mi esperanza era que la replicación de FIREBIRD 4.0 fuera transaccional. Es decir, replicamos en la base de datos réplica las transacciones realizadas en la original y por el mismo orden. Tal vez sea así, pero no encuentro documentación sobre el tema, a lo mejor porque al ser actualmente una Release Candidate, aún no tiene la documentación desarrollada.

Si alguien tiene más conocimientos sobre la replicación en Firebird 4.0 y piensa que se puede resolver el problema expuesto, sin tener que reprogramar todos los procedimientos de la base de datos, podríamos abrir en este hilo u otro, el tema de replicación de bases de datos en Firebird 4.0.

Saludos a todos.

Casimiro Notevi 05-04-2021 11:16:41

Creo que todavía no has leído nuestra guía de estilo, gracias.

CyberManolo 05-04-2021 13:53:10

Perdona Casimiro. No se que parte de la guía de estilo se está violando. Si te refieres a las búsquedas previas de información, antes de plantear un problema. Te aseguro que he mirado por todo el foro y no he encontrado nada relacionado a la replicación Firebird 4.0.
Puede que sea el que no es el sitio apropiado para la pregunta. Procuré situarme en el foro de Firebird e Interbase. No se.

Casimiro Notevi 05-04-2021 14:33:40

Hola, amigo, si mezclas preguntas distintas en un mismo hilo, nadie puede saber qué se está preguntando si es algo que no tiene nada que ver con el título.
Cita:

12. Solo se permite una pregunta por hilo, es una cuestión de simplicidad y objetividad en las respuestas y facilita las búsquedas.
Por eso es también muy importante poner títulos lo más descriptivos posible a lo que se pregunta.

CyberManolo 06-04-2021 11:08:36

Si, quizás no debí exponer varios problemas que se resumen en uno y una pregunta

¿Alguien tiene o sabe de un ejemplo de una replicación asíncrona o sincrona (me da igual) en firebird 4.0 que replique transaccionalmente (ya que si se limita a copiar registros finales dará errores debido a los triggers) y a la vez con condiciones sobre los registros a replicar?

Gracias.


La franja horaria es GMT +2. Ahora son las 22:23:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi