none
Criar integração de base interna e externa

    Pergunta

  • Olá a todos!

    Gostaria de saber a opinião de vocês a respeito da integração de dois bancos de dados, sendo um local e outro externo. O cenário é o seguinte:

    Sou desenvolvedor de uma empresa que tem como rotinas inscrição de alunos, calendário de cursos, mala-email, enfim, rotinas comuns à intranet de uma empresa. A empresa também possui um website, onde parte dessas informações é utilizada, porém o site não pode se comunicar com o servidor local.

    A solução encontrada e que vem sendo utilizada há vários anos, foi a criação de um sistema que gera um .mdb e envia por ftp para o site. Os dados de entrada do site (como solicitações de orçamento, etc), por sua vez, são capturados através de um outro mdb e é feito o download desse arquivo para o servidor local. Como podem imaginar, esse sistema tem demandado uma manutenção muito grande, além de inúmeras falhas ocorrerem no processo.

    Tendo esse cenário em vista, imaginei a seguinte solução: a criação de um banco sql para o site, hospedado externamente, e todas as rotinas de atualização (e resgate) dos dados seria feita através de alguma feature do SQL Server. Li a respeito do SQL Agent, acredito que seria o ideal para fazer essa integração.

    O que acham?

    Se não fui o claro o bastante é só perguntar. Obrigado!
    segunda-feira, 24 de novembro de 2008 11:32

Respostas

  • João,

     

    Você já pensou em utilizar replicação?

     

     

    segunda-feira, 24 de novembro de 2008 12:08
  • Olá João,

     

    Respondendo suas perguntas:

     

    O processo fica automatizado?

    sim o processo fica automatizado. ( como eu disse você pode replicar apenas uma tabela ou um banco de dados inteiro ).

     

     Quero dizer, se for alterado um dado na "fonte" local, o update é feito ao mesmo tempo no banco externo?

    Sim. E dependendo do tipo de replicação, alterações nos dois sentidos são replicadas.

     

    Se sim, seria necessário avaliar se a performance seria prejudicada - mas acredito que não, tendo em vista que o banco não é acessado a todo momento. Posso agendar serviços de atualização (ou ambos ao mesmo tempo, cada um em determinadas tabelas)?

     

    Você pode configurar de quanto em quanto tempo os dados são replicados.

    Para agendar tempos diferentes para cada tabela seria necessário a criação de várias plublicações da replicação.

     

    Um publicante é o server que disponibiliza a replicação. Um assinante são os servers que assinam a replicação publicada. Existe também o Distribuidor, que é responsável por entregar/pegar os dados para os assinates.

     

    O aconselhável ( geralmente ) é que seja criada apenas uma plublicação e defina-se o tempo de replicação igual para todas as tabelas.


    Além disso, como a replicação se comporta com tabelas estruturadas de maneiras diferentes? Quero dizer, no banco online, os dados em parte serão os mesmos, mas a estrutura e ordenação não (mais ou menos como se as tabelas do online se tornassem views, já com os joins, para facilitar as consultas).

     

    A estrutura das tabelas tem que ser igual. Uma dica seria: você replicar a tabela A para o server assinante, no server assinante, você criaria uma view para assessar essa tabela replicada. E na view você definiria a ordem, etc como desejado no banco assinante.

     

    Abraços

    segunda-feira, 24 de novembro de 2008 13:13

Todas as Respostas

  • João,

     

    Você já pensou em utilizar replicação?

     

     

    segunda-feira, 24 de novembro de 2008 12:08
  • Olá João,

     

    Como Júnior citou, possivelmente a replicação poderia resolver seu problema.

     

    Replicação é, basicamente, ter dois bancos de dados e por exemplo, caso você deseje que todas as alterações feitas em todas ou algumas tabelas sejam realizadas para os dois.

     

    Você pode criar uma replicação merge ou P2P ( replica alterações em ambos os sentidos ), transacional ( replica só de uma base para outra(s) ) ou snapshot ( replica toda a base de dados ).

     

     

    Abraços

     

    segunda-feira, 24 de novembro de 2008 12:19
  • Olá, obrigado pelas respostas.

    Só conheço replicação por ouvir falar. O processo fica automatizado? Quero dizer, se for alterado um dado na "fonte" local, o update é feito ao mesmo tempo no banco externo? Se sim, seria necessário avaliar se a performance seria prejudicada - mas acredito que não, tendo em vista que o banco não é acessado a todo momento. Posso agendar serviços de atualização (ou ambos ao mesmo tempo, cada um em determinadas tabelas)?

    Além disso, como a replicação se comporta com tabelas estruturadas de maneiras diferentes? Quero dizer, no banco online, os dados em parte serão os mesmos, mas a estrutura e ordenação não (mais ou menos como se as tabelas do online se tornassem views, já com os joins, para facilitar as consultas).

    Abraços.
    segunda-feira, 24 de novembro de 2008 13:02
  • Olá João,

     

    Respondendo suas perguntas:

     

    O processo fica automatizado?

    sim o processo fica automatizado. ( como eu disse você pode replicar apenas uma tabela ou um banco de dados inteiro ).

     

     Quero dizer, se for alterado um dado na "fonte" local, o update é feito ao mesmo tempo no banco externo?

    Sim. E dependendo do tipo de replicação, alterações nos dois sentidos são replicadas.

     

    Se sim, seria necessário avaliar se a performance seria prejudicada - mas acredito que não, tendo em vista que o banco não é acessado a todo momento. Posso agendar serviços de atualização (ou ambos ao mesmo tempo, cada um em determinadas tabelas)?

     

    Você pode configurar de quanto em quanto tempo os dados são replicados.

    Para agendar tempos diferentes para cada tabela seria necessário a criação de várias plublicações da replicação.

     

    Um publicante é o server que disponibiliza a replicação. Um assinante são os servers que assinam a replicação publicada. Existe também o Distribuidor, que é responsável por entregar/pegar os dados para os assinates.

     

    O aconselhável ( geralmente ) é que seja criada apenas uma plublicação e defina-se o tempo de replicação igual para todas as tabelas.


    Além disso, como a replicação se comporta com tabelas estruturadas de maneiras diferentes? Quero dizer, no banco online, os dados em parte serão os mesmos, mas a estrutura e ordenação não (mais ou menos como se as tabelas do online se tornassem views, já com os joins, para facilitar as consultas).

     

    A estrutura das tabelas tem que ser igual. Uma dica seria: você replicar a tabela A para o server assinante, no server assinante, você criaria uma view para assessar essa tabela replicada. E na view você definiria a ordem, etc como desejado no banco assinante.

     

    Abraços

    segunda-feira, 24 de novembro de 2008 13:13
  • Obrigado Junior e Demétrio, acho que replicação cairia como uma luva. Agora é estudar o projeto.

    Abraços.
    segunda-feira, 24 de novembro de 2008 13:31
  • João,

     

    Obrigado pelo retorno.

    segunda-feira, 24 de novembro de 2008 13:35
  • João,

     

    Agradeço igualmente.

     

    Qualquer dúvida que pudermos ajudá-lo ficaremos muito felizes.

     

    Abraços

     

    segunda-feira, 24 de novembro de 2008 15:11