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)
-   -   Replicacion de Base de datos Firebird (https://www.clubdelphi.com/foros/showthread.php?t=66871)

Chaja 21-07-2010 15:30:41

Replicacion
 
estuve leyendo todo esto... y me parece reloco.... por lo buenos que esta.... mi duda no se capaz que esta de mas.... que pasa con los generadores???? que se usan como pk. En las tablas que tienen relacion Master/detail que pasa. Yo en mis tablas tengo Triggers que se dispara en situacion de uso normal, para generar los mov de cta cte, stock eso sigue igual...?? me imagino que si pues si no no se usaria, pero no entiendo como la hace??

Luis Roldan
Mar del Plata
Argentina

pd : GuillotMar, gracias por tu buena onda

guillotmarc 21-07-2010 16:18:58

Hola Luis.

Cita:

Empezado por Chaja (Mensaje 371045)
estuve leyendo todo esto... y me parece reloco.... por lo buenos que esta.... mi duda no se capaz que esta de mas.... que pasa con los generadores???? que se usan como pk. En las tablas que tienen relacion Master/detail que pasa. Yo en mis tablas tengo Triggers que se dispara en situacion de uso normal, para generar los mov de cta cte, stock eso sigue igual...?? me imagino que si pues si no no se usaria, pero no entiendo como la hace??

Luis Roldan
Mar del Plata
Argentina

pd : GuillotMar, gracias por tu buena onda

En ese documento, tienes en uno de los últimos capítulos la problemática de las claves primarias (Unique Keys & Generators).

http://www.ibphoenix.com/main.nfs?a=...ge=ibp_howto10

Se pueden seguir utilizando perfectamente generadores para asignar las claves primarias (aunque otra gente prefiere usar UUID's como clave primaria, los cuales se pueden generar mediante UDF's, o incluso funciones internas agregadas a los últimos Firebird).

La solución que propone el documento es separar las claves en cada ubicación mediante bloques. Es decir, en un sitio se asignan PK's de 0 a 999.999, en otro sitio de 1.000.000 a 1.999.999, etc ...

Las relaciones maestro-detalle no representan ningún problema.

Respecto a los Triggers que ya tienes en tus tablas, tampoco son ningún problema, puesto que en cada tabla puedes tener tantos triggers como quieras (tienen un orden, y se ejecutan todos esos triggers, uno detrás de otro, en el orden en que estén definidos).

Saludos.

Kipow 21-07-2010 19:19:58

Como lo menciona Guillotmarc es precisamente como yo lo tengo integrado, correlativos por BD.

Tocando el tema estoy por empezar el proceso en el cual voy a involucrar a un tercer ente (ftp) para poder enlazar, ya les contare como me va. :)

guillotmarc 21-07-2010 20:57:16

Yo personalmente no lo hago correlativo por BBDD, yo prefiero añadir un sufijo según la BBDD.

Es decir, utilizo un generador normal y corriente, y a medida que me da números 1, 2, 3, 4, ... pues si estoy en la base de datos nº 1, le añado un 01 detrás, de forma que me quedan : 101, 201, 301, 401, en cambio en la segunda base de datos me va generando los códigos : 102, 202, 302, ... Así estoy seguro de que nunca va a haber conflictos de clave primaria.

Saludos.

dsalap 04-02-2011 01:43:26

Cita:

Empezado por guillotmarc (Mensaje 357121)
Si no te quieres complicar mucho la vida, puedes utilizar el IB-Replicator de la misma IB-Phoenix (la empresa que está por detrás, apoyando Firebird).

http://www.ibphoenix.com/main.nfs?page=ibp_replicator

Esta es la opción más sencilla, después puedes optar por un replicador open-source como el FBReplicator

http://www.meta.com.au/index.php?opt...d=23&Itemid=30

Y finalmente puedes crearte tu propio Replicador (como hemos hecho muchos), por lo que si quieres hacerlo te podemos decir por donde empezar.

Saludos.

Hola Guillotmarc,

Buscando un replicador para mssql o mysql di con el foro y me gusto tu idea del replicador hecho en base a triggers. Mencionas que puedes ayudar para programar uno similiar asi que me atrevo a pedirte si podrias darme mas detalles y puntos a tomar en cuenta para implementar un replicador asi . Yo programo en vfp pero teniendo la idea general del programa creo que puedo implementarla en este lenguaje o posiblemente ni sea necesario y pueda ejecutarse como programa independiente en delphi ya que solo accesara las bases de datos correspondientes. Mi caso es igual a los comentados , una base de datos central con un ciento de bases de datos locales que deben replicar sus datos a la central ya que esta se utilizara para replicar a un servidor para emision de reportes y consultas consolidadas de varias sucursales. Muchas gracias de antemano. Mi correo es : dsalap @ gmail.com . Saludos a todos.

guillotmarc 05-02-2011 19:18:15

Hola.

Cita:

Empezado por dsalap (Mensaje 389916)
Hola Guillotmarc,

Buscando un replicador para mssql o mysql di con el foro y me gusto tu idea del replicador hecho en base a triggers. Mencionas que puedes ayudar para programar uno similiar asi que me atrevo a pedirte si podrias darme mas detalles y puntos a tomar en cuenta para implementar un replicador asi . Yo programo en vfp pero teniendo la idea general del programa creo que puedo implementarla en este lenguaje o posiblemente ni sea necesario y pueda ejecutarse como programa independiente en delphi ya que solo accesara las bases de datos correspondientes. Mi caso es igual a los comentados , una base de datos central con un ciento de bases de datos locales que deben replicar sus datos a la central ya que esta se utilizara para replicar a un servidor para emision de reportes y consultas consolidadas de varias sucursales. Muchas gracias de antemano. Mi correo es : dsalap @ gmail.com . Saludos a todos.

Este es el documento básico que creo que hemos utilizado todos para montar nuestros mecanismos de Replicación en Firebird.

http://www.ibphoenix.com/resources/d...how_to/doc_316
Traducción automática por Google

Deberías leerlo y después si quieres lo comentamos, puesto que personalmente hay cosas que prefiero hacer distinto.

guillotmarc 05-02-2011 19:26:41

Por cierto, hemos hablado mucho de este tema en otras ocasiones. Te recomiendo que leas esos comentarios (utiliza la opción Buscar que tienes arriba del Foro a la derecha).

Especialmente te recomiendo que leas este hilo :

http://www.clubdelphi.com/foros/showthread.php?t=69827

Saludos

dsalap 05-02-2011 20:03:37

muchas gracias Marc, voy a revisar el documento y el enlace que comentas y luego me pondre en contacto nuevamente.

Saludos desde Cancun

Daniel S.

Vlady 20-05-2011 00:29:30

tipos de datos-replicación
 
tu que desarrollaste el replicador, como hiciste para manejar los diferentes tipos de datos que tienen las claves primarias en una base de datos.
Qué propiedades del campo de firebird puedo utilizar desde delphi para saber si es tipo varchar o integer, y poder realizar las consultas correctamente.

En qué tablas quedan almacenados las columnas y tipos de datos en firebird?

Agradezco sus comentarios

Kipow 20-05-2011 01:58:41

Código SQL [-]
select A.RDB$FIELD_NAME AS CAMPO, RDB$FIELD_TYPE AS TIPO_DATO
from RDB$RELATION_FIELDS A inner join RDB$FIELDS B on (A.RDB$FIELD_SOURCE = B.RDB$FIELD_NAME)
where (A.RDB$RELATION_NAME = :tabla)
ORDER BY RDB$FIELD_POSITION

y para la llave primaria

Código SQL [-]
select S.rdb$field_name as CAMPO, (select RDB$FIELD_TYPE
                                  from RDB$RELATION_FIELDS A inner join RDB$FIELDS B on (A.RDB$FIELD_SOURCE = B.RDB$FIELD_NAME)
                                  where (A.RDB$RELATION_NAME = i.rdb$relation_name) and (a.rdb$field_name = s.rdb$field_name)) AS TIPO_DATO

from ((rdb$indices i INNER JOIN rdb$index_segments s ON (i.rdb$unique_flag=1 and i.rdb$relation_name=:tabla and s.rdb$index_name=i.rdb$index_name)) INNER JOIN rdb$relation_constraints A
      ON s.rdb$index_name=a.rdb$index_name and rdb$constraint_type = 'PRIMARY KEY')


ORDER BY RDB$FIELD_POSITION

Vlady 23-05-2011 14:43:40

gracias
 
compañero, muchas gracias por su ayuda!!

saistech 20-07-2020 02:56:34

Buenas a Todos, alguno de uds me puede ayudar con el FBREPLICATOR?

Casimiro Noteví 20-07-2020 10:18:15

Bienvenido a clubdelphi, por favor, lee nuestra guía de estilo, gracias :)

Cita:

Empezado por saistech (Mensaje 538012)
Buenas a Todos, alguno de uds me puede ayudar con el FBREPLICATOR?



La franja horaria es GMT +2. Ahora son las 20:16:40.

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