Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-09-2010
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Sugerencias para replicacion en sucursales

Hola a todos

Se q es un tema q se ha hablado aqui varias veces , pero cuando se pasa 16 horas en un computador pensando como hacer ya uno como q no da mas

Si pudieran orientarme un poco mas sobre este tema o alguien me puede guiar se lo agradeceria (se q Guillotmarc tiene un buen replicador espero me pueda el y todos ustedes dar la mano es las siguientes dudas )


Necesito saber si me puedes ayudar con el tema de replicacion estoy utilizando fb1.5 y delphi 6 , he visto algunas respuestas tuyas con este tema y tengo algunas

Si hubiese un replicador q haga lo q yo necesito estaria dispuesto a comprar las licencias

Los detalles q quisiera saber son los siguientes

1.- EL sistema sera instalado en varias sucursales ... estas estaran en linea siempre pero uno nunca sabe q puede salir mal (ahi es donde entra la opcion de saber q se ha enviado y q no)

2.- Una sucursal puede o podria estar sin coneccion maximo unas dos o 3 horas razon suficiente para generar unos 1000 registros (factura , detalle de facturas , forma de pagos , historicos, saldos acumulados , clientes etc)

3.- Los datos o la estructura de la base maestra como debe de ser

en fin muchas dudas, si fueras tan amable queria saber tu opinion y disponibilidad para ayudarme en este tema muy importante y guiarme un poco

De antemano muchas gracias por tu tiempo
__________________
IVAND
Responder Con Cita
  #2  
Antiguo 11-09-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, IVAND, si quieres puedes enviarle un mensaje privado a Guillotmarc enlazándole este tema, así estarás seguro de que no se le pasará esta pregunta tuya.
Responder Con Cita
  #3  
Antiguo 11-09-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola Iván.

Creo que todos los que hemos programados nuestros propios motores de replicación nos hemos basado en este documento, es todo un clásico (y muy bien explicado). Léelo y no vaciles en consultar cualquier duda.

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

El motor de Firebird ha evolucionado bastante en estos años, así que algunas cosas se pueden simplificar. El principal cambio que te recomiendo es utilizar un Rol en lugar del nombre de Usuario, para detectar cuando se está modificando una tabla desde dentro del motor de replicación.

Es decir en los Triggers que se hacen para los sistemas bidireccionales, sustituímos la linea :

IF (USER <> "REPLICATE") THEN

por la línea :

IF (CURRENT_ROLE <> "REPLICATE") THEN

La ventaja de usar un Rol en lugar de un Usuario, es que deberías asignar derechos sobre todas las tablas para el nuevo usuario REPLICACION, cosa que es laboriosa y es fácil olvidarte en el futuro a medida que añades tablas al sistema. En cambio no es necesario añadir derechos a las tablas en los roles (puesto que el usuario que vienes utilizando ya tiene acceso a esas tablas).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 12-09-2010
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Gracias a los dos por sus respuestas , leere el tema y no olvidare preguntarles


Muchas gracias

Espero no ser muy molestoso y si consideran q pueden venderme alguna licencia de su replicador no duden en decirlo
__________________
IVAND
Responder Con Cita
  #5  
Antiguo 12-09-2010
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Ya he echo una prueba y me ha salido super bien ... hay un par de cositas q me gustaria q me orientaran , una vez q seguire probando les molestare gracias nuevamente

Tendre q cambiar un par de cositas en la base de datos como claves unicas
__________________
IVAND
Responder Con Cita
  #6  
Antiguo 12-09-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola Iván, me alegra que vayas avanzando bien.

Respecto a las claves únicas. Tienes varias opciones.

1) Utilizar un UUID como clave primaria en todas las tablas (Es una solución sencilla, en la que no te tienes que preocupar de más problemas. Yo no la utilizo porqué es incómoda a la hora de trabajar con los datos, si quieres lanzar una consulta para ver todas las líneas de una factura, tendrás que escribir una consulta con una clave secundaria de 16 dígitos).

http://www.firebirdfaq.org/faq98/

NOTA: Estos UUID se guardan en campos varchar(16) con el charset OCTETS.

2) Seguir utilizando un Entero largo, pero en este caso te tienes que asegurar de que no pueden entrar en conflicto los números asignados en las distintas ubicaciones en Replicación.

Para solventar el punto 2) algunos amigos lo han solventado reservando paquetes. Es decir, el primer servidor asignará claves primarias del 1 al 10.000, el segundo servidor del 10.001 al 20.000, etc. ...

A mi me parece muy laborioso, y además tienes que tener en cuenta de que un servidor puede agotar todas las claves primarias que tenía asignadas, y se le ha de asignar un nuevo paquete.

Personalmente he optado por añadir un sufijo a las claves primarias. Es decir todos los claves primarias creadas por el primer servidor acaban en 01, las creadas por el segundo acaban en 02, etc. ...

Para ello tengo una tabla CONFIG, donde se guarda el campo UBICACION (que indica si es el servidor 1, 2, 3, 4, ...).

Asi pués, en el momento de asignar una nueva clave primaria, la calculo de la forma habitual, con un generador, pero mediante una consulta de este estilo :

select gen_id(GENERADOR_TABLA, 1) * 100 + UBICACION
from CONFIG
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sugerencias para nueva aplicación diegofhernando Varios 3 15-04-2009 15:33:49
Sugerencias para pasar XML a Tabla MaMu Varios 0 01-11-2008 01:41:33
sugerencias para generar password torito Varios 7 10-06-2008 19:30:52
Sugerencias para programa 3D... Er_Manué Varios 2 30-10-2006 15:05:22
que usar para hacer replicacion pani_alex Conexión con bases de datos 2 22-04-2006 14:49:25


La franja horaria es GMT +2. Ahora son las 02:48:45.


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
Copyright 1996-2007 Club Delphi