Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Edgard vTT

Bancos de dados em servidores diferentes - Como melhorar?

Recommended Posts

Possuo um site de compartilhamento de animações ( http://stickmanproject.com/ para quem quiser conhecer), e devido à empresa com a qual faço a hospedagem (HostNet), todos os meus bancos de dados ficam em servidores diferentes, e gostaria de alguma recomendação para tornar mais eficiente a conexão à esses servidores com os BDs.

 

 

Quando fui "passar" o meu site da máquina local para a hospedagem, percebi que tinha direito à 5 bancos de dados, e achei que seria uma boa dividir as tabelas em 3 bancos, muito embora entendesse pouco de MySQL na época (comecei a entender melhor só nas últimas semanas). Assim, destinei um banco para conteúdos do próprio site, como postagens no blog de desenvolvimento e artigos de ajuda, outro para os perfis de usuários e outro para animações e comentários.

 

O problema é que muitas vezes preciso de dados que estão em bancos diferentes (e portanto servidores diferentes), sendo assim tenho que realizar diversas conexões num mesmo script.

 

Para exibir animações, por exemplo, preciso do banco de dados das animações (para pegar a descrição, título, visualizações, etc) e do de usuários (para exibir o nome do autor). Como cada animação possui área de comentários, preciso novamente conectar no banco de animações (pois a tabela de comentários está lá também) e de novo ao de usuários (para pegar o nome do autor também). Desse modo, no mínimo 4 conexões em servidores diferentes são necessários. E para cada comentário são necessárias mais 2 conexões.

 

Não sei o quanto isso impacta na performance, mas de qualquer jeito simplesmente não me parece o "meio certo" de fazer as coisas. Assim, gostaria de alguma recomendação para tornar mais eficiente todo o processo. Por agora, tenho 2 ideias:

  • Mover todas as tabelas para um unico banco de dados (e portanto um único servidor). Assim só preciso conectar uma vez, e posso usar dados de tabelas diferentes mais facilmente;
  • Realizar as conexões que eu preciso de uma vez só no topo do script. Por exemplo:
    $Con1 = mysql_connect(DB_1, USER, PASS, true);
    $Con2 = mysql_connect(DB_2, USER, PASS, true);
    //Agora basta fornecer a conexão para cada query.
    //Nota: os nomes e variáveis usados são só de exemplo. Até porque estas queries estão abertas à SQL Injection
    $Query = mysql_query("SELECT * FROM Animations WHERE Id = '{$_GET['id']}'", $Con1);
    $Query2 = mysql_query("SELECT * FROM Users WHERE UserName = '{$_GET['by']}'", $Con2);


  • Ou ainda eu poderia deixar tudo do jeito que está, porque na verdade conexões com servidores diferentes causam muito pouco impacto na performance?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Unificar é a melhor opção. Não há uma regra específica para determinar quando devemos aplicar uma separação de bases, mas, absolutamente, seu caso não parece ser adequado a uma separação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Unificar é a melhor opção. Não há uma regra específica para determinar quando devemos aplicar uma separação de bases, mas, absolutamente, seu caso não parece ser adequado a uma separação.

 

Obrigado pela recomendação. :grin:

 

Realmente não há nenhum motivo para eu separar em bancos diferentes, ainda mais considernado o pouco volume de dados que tenho. Na época só achei melhor porque, de repente, seria uma garantia de espaço para cada tipo de conteúdo (perfils, animações e conteúdo próprio do site), mas agora vejo que é desnecessário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.