[firebase-br] Replicar BD

Toy Ghilardi toyhardcore em gmail.com
Qua Abr 2 14:23:32 -03 2014


Ola Wesley,

O recurso que citaram de "replicação" que o firebird tem é o shadows que
não tem nada a ver com o que você quer.

Uma vez li um artigo que coloquei em prática que é o seguinte.

Criar uma tabela onde você vai gravar todas alterações ocorridas no banco
de dados nas tabelas que tenha interesse.

CREATE GENERATOR NEW_CHANGE_ID;

CREATE TABLE CHANGES (
    CHANGE_ID           INTEGER NOT NULL,
    CHANGE_TYPE         CHAR(1) NOT NULL,
    SOURCE_KEY_FIELD    VARCHAR(100) NOT NULL,
    SOURCE_KEY          VARCHAR(100) NOT NULL,
    SOURCE_TABLE        VARCHAR(100),
    SOURCE_KEY_2        VARCHAR(100),
    SOURCE_KEY_FIELD_2  VARCHAR(100),
    TIPO                CHAR(1)
);
ALTER TABLE CHANGES ADD PRIMARY KEY (CHANGE_ID);



SET TERM ^ ;

/* Trigger: CHANGES_NEWID */
CREATE OR ALTER TRIGGER CHANGES_NEWID FOR CHANGES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
    NEW.CHANGE_ID = GEN_ID(NEW_CHANGE_ID,1);
END
^
SET TERM ; ^

Depois em cada tabela que tiver interesse em replicar, tu cria uma trigger
assim:

SET TERM ^ ;
CREATE OR ALTER TRIGGER CLIENTES_REPL_INSERT FOR CLIENTES
ACTIVE AFTER INSERT POSITION 0
AS
declare variable vUser varchar(15);
BEGIN
    INSERT INTO CHANGES
      (CHANGE_TYPE, SOURCE_KEY_FIELD,
       SOURCE_KEY, SOURCE_TABLE,USERNAME)
    VALUES
      ('I', 'CODIGO_CLIENTE', NEW.CODIGO_CLIENTE, 'CLIENTES');
END
^
SET TERM ; ^

Bem, agora todos clientes que forem cadastrados o sistema irá registrar na
tabela changes.

Basta você criar uma aplicação que fique rodando e com base nos dados
gravados em changes, pegue os valores na tabela clientes e gere um insert
para rodar no outro banco.

Abraço!



Em 2 de abril de 2014 09:11, Wesley Oliveira <wesley em rgsystem.com.br>escreveu:

> Olá pessoal!
>
>
>
> Pesquisei um pouco na internet e achei alguns replicadores Firebird que não
> funcionaram como eu queria... Será que vocês têm alguma idéia?
>
> É o seguinte:
>
>
>
> Quero ter duas bases de dados iguais em dois locais separados. Exemplo:
>
>
>
> Vou disponibilizar o acesso ao sistema na rede interna, mas quero deixar o
> acesso Web num servidor em nuvens... Então teria a base para acesso Desktop
> em um servidor interno e a base para acesso Web no servidor em nuvem. Só
> que
> como preciso das informações de ambos acessos EM AMBOS ACESSOS, preciso que
> as bases sejam idênticas o tempo todo. Tem algum componente Delphi ou
> aplicativo que faz isso?
>
>
>
> Agradeço a atenção de todos!
>
>
> Att.
>
> Wesley Oliveira
> Programador de Sistemas de Informação
>
> RG System Informática
> Fone:      +55 (27) 3727-1127
> Celular:    +55 (27) 99606-0038
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
toyhardcore em gmail.com.br



Mais detalhes sobre a lista de discussão lista