none
Conexão externa RRS feed

  • Pergunta

  • Olá por atacado.

    Estou desenvolvendo duas aplicações que utilizariam o mesmo BD remoto. Uma das aplicações é web e a outra é para desktop. Lembrando que ambas as aplicações são para automação comercial, e, sendo assim, precisam ter os dados atualizados.

    A questão é: No caso do desktop, é melhor deixar cada maquina da rede apontar para o BD remoto ou instalar um BD na rede local de fazer uma replicação dos dados?

    Qual a melhor pratica neste caso?

    quarta-feira, 9 de março de 2011 09:01

Respostas

  • Bom dia Edivaldo,

     

    É melhor você manter um banco de dados local que receba os dados do servidor, pois não se pode garantir que os desktops sempre terão conexão com a internet para buscar os dados no servidor remoto.

     

    Se sua aplicação depende desses dados e a internet cair, significa que a loja não irá trabalhar mais correto? Por isso o banco de dados deve ser local.

     

    Trabalho no mesmo ramo, e as lojas possuem BD local que são atualizados quando há conexão.

     

    Espero ter ajudado.

     

     


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */
    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:55
    quarta-feira, 9 de março de 2011 13:22
  • Edivaldo,

     

    Concordo com a Mariana do ponto de vista que se a "loja" não pode mesmo parar de forma alguma, é melhor cada uma possuir seu DB local e fazer uma replicação, todo caso, avalie antes o poder desses desktops locais X Quantidade de dados e processamento, talvez se essa relação for ruim, seja melhor garantir uma rede 99.999% ativa do que stressar uma maquina, e imagina se este desktop esta com 100% de processamento, queima algum componente, e simplismente desliga a maquina antes de fazer uma replicação? talvez uma rede (link) seja mais facil de ser arrumado do que um componente fisico por exemplo.

     

    Todo caso, na maioria das vezes esses processamentos locais (tambem trabalho assim), são baixos, então o melhor mesmo é a opção dita pela Mariana.


    ------------------------------------------------------------- Oracle OCA11g
    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:55
    quarta-feira, 9 de março de 2011 13:29
    Moderador
  • Boa Tarde,

    Eu discordo da opinião dos demais em relação a utilização de bancos de dados locais e replicação. Embora tecnologicamente seja possível, acho que é muito prudente que olhemos um pouco fora da caixa do SQL Server e da tecnologia. Ao meu ver, uma análise simplista e trivial irá deixar de lado alguns pontos muito importantes para o negócio (não basta pensar somente em tecnologia).

    Falemos um pouco da replicação. O primeiro ponto a ser considerado é que a replicação irá exigir que você tenha versão "não express" para poder utilizá-la. Claro que a replicação pode ser utilizado no Express, mas se você necessita que as pontas repliquem, ou seja, que as lojas enviem os dados para a matriz, será necessário que você possua uma edição paga e isso já irá incorrer em alguns custos para as lojas.

    Mesmo que não houvesse os custos de licenciamento do SQL Server, veja que você irá exigir que haja um banco local para gravação das vendas das lojas. O simples fato de você colocar um banco local já irá dispender alguns outros cuidados (leia-se custos). Será necessário adquirir um hardware para rodar o banco de dados, um profissional (mesmo que um micreiro) para efetuar a instalação do banco e a manutenção do software em geral. Vale a pena lembrar que cuidados como backup e rotinas de manutenção não poderão ser dispensados, pois, podem comprometer o desempenho do aplicativo.

    É fato que um bom setup pode eliminar alguns desses problemas, mas dificilmente você poderá eliminá-los completamente à medida que o seu negócio cresça. Vamos supor uma cadeia com 100 lojas. Se cada uma der quatro problemas ao ano (um mísero problema por trimestre) será uma verdadeira vitória para a loja (ter apenas quatro problemas em ano se tratando de bancos locais com replicação é mesmo um recorde). Entretanto, se cada uma das 100 lojas tiver quatro problemas, você terá 400 problemas em um ano o que significa mais de um problema por dia. Adicione aí uma certa dose de complexidade e certamente terá de alocar alguém para resolvê-lo ou horas de ligações telefônicas. Mesmo o uso do email e dezenas de PRINT Screens, não irão resolver o problema de imediato, além do que, enquanto há problema a loja pode ficar sem poder efetuar as vendas de qualquer forma.

    Outro problema relacionado a distribuir seus dados reside nas atualizações. Se estamos falando da Internet como rede de transmissão de dados, como garantir a transmissão e o acesso seguro ? Do lado da matriz, é fácil ter um SQL Server hospedado em um Data Center com o máximo de segurança e SLAs bem definidos, mas o que fazer com as pontas ? Ora, mas a replicação irá disparar os dados da filial para a matriz, então não há problema certo ? Errado. Possivelmente você possuirá tabelas de domínio na matriz como um cadastro de produtos, empresas, profissionais inadimplentes, etc que terão de ser replicadas para as filiais, e se por um lado já é complicado abrir o SQL Server da matriz na Internet (mesmo com todos os profissionais muito preparados no Data Center), quem dirá compartilhar todos os bancos locais direto na Internet. Certamente uma decisão muito incorreta do ponto de vista de segurança. Ainda que você não opte pela replicação para distribuir os dados para as filiais, a necessidade ainda existe e você terá que encontrar uma maneira, o que significa mais custos.

    Uma última recomendação. Lembre-se de que você não tem controle direto sobre os Desktops. Se você é daqueles que coloca todas as regras de negócio em SPs, basta alguém mais espertinho para burlá-las e aí abrem-se então as portas para fraudes e necessidades de controle adicionais em cada filial (mais controles, mais custos). Não precisa colocar a regra em SPs não... O simples fato do banco estar local já permitirá que alguém manipule-o diretamente sem o seu conhecimento. Criptografia ? Ajudará, mas também irá trazer mais complicações para o desenvolvimento do software e mais custos.

    Não estou dizendo que o uso de bancos locais não seja uma boa solução (muitas vezes são a melhor solução inclusive), mas pense em outras variáveis que não somente o uso da feature A ou a feature B. Pense em quantas lojas você possue hoje e quantas irá possuir além da estrutura de custos e investimentos envolvidas para sustentar a solução tecnologia que você irá empregar. Pode ser que você descubra que era muito mais fácil, ter um meio de acesso redudante à Internet como uma Internet via Celular. Cabe agora uma análise mais detalhada.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 9 de março de 2011 16:49
  • Edivaldo,

    Gostaria de colocar mais dados para você pensar, deixar voce louco de vez....mas vou ter de fazer propaganda do meu produto, muita gente tem verdadeiro trauma da palavra replicação, replicação não é sinonimo de complicação, é complicação apenas se você usar o produto errado.

    Hoje no Brasil vejo empresas com mais de 100 lojas afundando, não conseguindo crescer mais, pois ficam tão dependentes de um super hiper servidor central e de uma super hiper infra redundante de links que o custo fica absurdo....te garanto que fica muiiiiiiiito mais barato voce ter 5 DBAs que seja, controlando a replicação de 200 lojas, do que uma infra que comporte todos os usuarios dessas 200 lojas num único servidor.

    Se você procurar exemplos de grandes redes de lojas nos EUA, mas grande mesmo, aqui no Brasil isso não existe, estou falando de 1 mil a 5 mil lojas espalhadas no país inteiro....como voce acha que eles operam ??? e olha que la a internet é muito boa e muito barata, acham que operam de forma centralizada ?? claro que não !! usam exaustivamente recursos de replicação, e aí tem replicação para todos os gostos, desde replicação de storages (muito ruim por sinal para a nossa realidade de internet fraca) até a replicação mais inteligente multi-master de bancos de dados, replicando apenas o que é preciso.

    Então se você quiser fazer algo realmente escalável, e na crista da onda em tecnologia, não tente usar um banco central não, e muito menos usar um servidor de app e usuarios conectados via TS, solução horrível esta...

    Da uma olhada no nosso produto, se quiser escreva para nós que deixamos voce testar antes de tomar esta dificil decisao, e nosso produto funciona de forma multi-master / bidirecional mesmo usando SQL Server Express. (visite http://www.object.com.br)

    Grande abraço,

    Wagner

     

    (TI sempre da trabalho mesmo, então trabalho por trabalho deixe pelo menos o seu cliente feliz: desempenho de servidor local, e deixa uma servidor central lá só pra redundância mesmo, se por acaso o local pegar fogo o usuario usa la o central enquanto voce refaz o local, e backup ? esqueça, seus dados estarão replicados todos no central...não precisa de backup local não..)

     

    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:56
    quinta-feira, 10 de março de 2011 22:41

Todas as Respostas

  • Bom dia Edivaldo,

     

    É melhor você manter um banco de dados local que receba os dados do servidor, pois não se pode garantir que os desktops sempre terão conexão com a internet para buscar os dados no servidor remoto.

     

    Se sua aplicação depende desses dados e a internet cair, significa que a loja não irá trabalhar mais correto? Por isso o banco de dados deve ser local.

     

    Trabalho no mesmo ramo, e as lojas possuem BD local que são atualizados quando há conexão.

     

    Espero ter ajudado.

     

     


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */
    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:55
    quarta-feira, 9 de março de 2011 13:22
  • Edivaldo,

     

    Concordo com a Mariana do ponto de vista que se a "loja" não pode mesmo parar de forma alguma, é melhor cada uma possuir seu DB local e fazer uma replicação, todo caso, avalie antes o poder desses desktops locais X Quantidade de dados e processamento, talvez se essa relação for ruim, seja melhor garantir uma rede 99.999% ativa do que stressar uma maquina, e imagina se este desktop esta com 100% de processamento, queima algum componente, e simplismente desliga a maquina antes de fazer uma replicação? talvez uma rede (link) seja mais facil de ser arrumado do que um componente fisico por exemplo.

     

    Todo caso, na maioria das vezes esses processamentos locais (tambem trabalho assim), são baixos, então o melhor mesmo é a opção dita pela Mariana.


    ------------------------------------------------------------- Oracle OCA11g
    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:55
    quarta-feira, 9 de março de 2011 13:29
    Moderador
  • Boa Tarde,

    Eu discordo da opinião dos demais em relação a utilização de bancos de dados locais e replicação. Embora tecnologicamente seja possível, acho que é muito prudente que olhemos um pouco fora da caixa do SQL Server e da tecnologia. Ao meu ver, uma análise simplista e trivial irá deixar de lado alguns pontos muito importantes para o negócio (não basta pensar somente em tecnologia).

    Falemos um pouco da replicação. O primeiro ponto a ser considerado é que a replicação irá exigir que você tenha versão "não express" para poder utilizá-la. Claro que a replicação pode ser utilizado no Express, mas se você necessita que as pontas repliquem, ou seja, que as lojas enviem os dados para a matriz, será necessário que você possua uma edição paga e isso já irá incorrer em alguns custos para as lojas.

    Mesmo que não houvesse os custos de licenciamento do SQL Server, veja que você irá exigir que haja um banco local para gravação das vendas das lojas. O simples fato de você colocar um banco local já irá dispender alguns outros cuidados (leia-se custos). Será necessário adquirir um hardware para rodar o banco de dados, um profissional (mesmo que um micreiro) para efetuar a instalação do banco e a manutenção do software em geral. Vale a pena lembrar que cuidados como backup e rotinas de manutenção não poderão ser dispensados, pois, podem comprometer o desempenho do aplicativo.

    É fato que um bom setup pode eliminar alguns desses problemas, mas dificilmente você poderá eliminá-los completamente à medida que o seu negócio cresça. Vamos supor uma cadeia com 100 lojas. Se cada uma der quatro problemas ao ano (um mísero problema por trimestre) será uma verdadeira vitória para a loja (ter apenas quatro problemas em ano se tratando de bancos locais com replicação é mesmo um recorde). Entretanto, se cada uma das 100 lojas tiver quatro problemas, você terá 400 problemas em um ano o que significa mais de um problema por dia. Adicione aí uma certa dose de complexidade e certamente terá de alocar alguém para resolvê-lo ou horas de ligações telefônicas. Mesmo o uso do email e dezenas de PRINT Screens, não irão resolver o problema de imediato, além do que, enquanto há problema a loja pode ficar sem poder efetuar as vendas de qualquer forma.

    Outro problema relacionado a distribuir seus dados reside nas atualizações. Se estamos falando da Internet como rede de transmissão de dados, como garantir a transmissão e o acesso seguro ? Do lado da matriz, é fácil ter um SQL Server hospedado em um Data Center com o máximo de segurança e SLAs bem definidos, mas o que fazer com as pontas ? Ora, mas a replicação irá disparar os dados da filial para a matriz, então não há problema certo ? Errado. Possivelmente você possuirá tabelas de domínio na matriz como um cadastro de produtos, empresas, profissionais inadimplentes, etc que terão de ser replicadas para as filiais, e se por um lado já é complicado abrir o SQL Server da matriz na Internet (mesmo com todos os profissionais muito preparados no Data Center), quem dirá compartilhar todos os bancos locais direto na Internet. Certamente uma decisão muito incorreta do ponto de vista de segurança. Ainda que você não opte pela replicação para distribuir os dados para as filiais, a necessidade ainda existe e você terá que encontrar uma maneira, o que significa mais custos.

    Uma última recomendação. Lembre-se de que você não tem controle direto sobre os Desktops. Se você é daqueles que coloca todas as regras de negócio em SPs, basta alguém mais espertinho para burlá-las e aí abrem-se então as portas para fraudes e necessidades de controle adicionais em cada filial (mais controles, mais custos). Não precisa colocar a regra em SPs não... O simples fato do banco estar local já permitirá que alguém manipule-o diretamente sem o seu conhecimento. Criptografia ? Ajudará, mas também irá trazer mais complicações para o desenvolvimento do software e mais custos.

    Não estou dizendo que o uso de bancos locais não seja uma boa solução (muitas vezes são a melhor solução inclusive), mas pense em outras variáveis que não somente o uso da feature A ou a feature B. Pense em quantas lojas você possue hoje e quantas irá possuir além da estrutura de custos e investimentos envolvidas para sustentar a solução tecnologia que você irá empregar. Pode ser que você descubra que era muito mais fácil, ter um meio de acesso redudante à Internet como uma Internet via Celular. Cabe agora uma análise mais detalhada.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 9 de março de 2011 16:49
  • Obrigado Mariana, Fabrizzio e Gustavo.

     

    Realmente é uma decisão muito complexa, afinal, o que esta em jogo não é somente a a relação hora/produção, e sim a imagem da empresa e a confiabilidade de nossa solução,

    Como programador, não consigo visualizar outra forma de manter as duas aplicações sincronizadas. Além da conexão direta/replicação, quais outras opções estão disponíveis? Como garantir que os dados sejam reais e confiáveis em ambas as aplicações?  

    Se não houvesse tamanha transferência de informação até que um WS resolveria, mas a quantidade de informação não permite.

     

    Minha mãe sempre me disse: Meu filho, estude para ser doutor. Entendi programador e me lasquei. rsrsrs

    quarta-feira, 9 de março de 2011 23:28
  • Edivaldo,

    Gostaria de colocar mais dados para você pensar, deixar voce louco de vez....mas vou ter de fazer propaganda do meu produto, muita gente tem verdadeiro trauma da palavra replicação, replicação não é sinonimo de complicação, é complicação apenas se você usar o produto errado.

    Hoje no Brasil vejo empresas com mais de 100 lojas afundando, não conseguindo crescer mais, pois ficam tão dependentes de um super hiper servidor central e de uma super hiper infra redundante de links que o custo fica absurdo....te garanto que fica muiiiiiiiito mais barato voce ter 5 DBAs que seja, controlando a replicação de 200 lojas, do que uma infra que comporte todos os usuarios dessas 200 lojas num único servidor.

    Se você procurar exemplos de grandes redes de lojas nos EUA, mas grande mesmo, aqui no Brasil isso não existe, estou falando de 1 mil a 5 mil lojas espalhadas no país inteiro....como voce acha que eles operam ??? e olha que la a internet é muito boa e muito barata, acham que operam de forma centralizada ?? claro que não !! usam exaustivamente recursos de replicação, e aí tem replicação para todos os gostos, desde replicação de storages (muito ruim por sinal para a nossa realidade de internet fraca) até a replicação mais inteligente multi-master de bancos de dados, replicando apenas o que é preciso.

    Então se você quiser fazer algo realmente escalável, e na crista da onda em tecnologia, não tente usar um banco central não, e muito menos usar um servidor de app e usuarios conectados via TS, solução horrível esta...

    Da uma olhada no nosso produto, se quiser escreva para nós que deixamos voce testar antes de tomar esta dificil decisao, e nosso produto funciona de forma multi-master / bidirecional mesmo usando SQL Server Express. (visite http://www.object.com.br)

    Grande abraço,

    Wagner

     

    (TI sempre da trabalho mesmo, então trabalho por trabalho deixe pelo menos o seu cliente feliz: desempenho de servidor local, e deixa uma servidor central lá só pra redundância mesmo, se por acaso o local pegar fogo o usuario usa la o central enquanto voce refaz o local, e backup ? esqueça, seus dados estarão replicados todos no central...não precisa de backup local não..)

     

    • Marcado como Resposta Richard Juhasz segunda-feira, 28 de março de 2011 19:56
    quinta-feira, 10 de março de 2011 22:41