Frontend de banco de dados rico - como lidar corretamente com redes de baixa qualidade?

1

Eu tenho uma experiência muito limitada de programação de banco de dados e meus aplicativos que acessam bancos de dados são simples :). Até agora :(. Eu preciso criar um aplicativo de desktop de tamanho médio (ele é chamado rich client?) Que irá usar um banco de dados na rede para compartilhar dados entre vários usuários.Muito provavelmente eu vou usar C # e MSSQL / MySQL / SQLite.

Eu realizei alguns testes de unidade e descobri que em redes de baixa qualidade o acesso ao banco de dados não é tão fácil. Na LAN de uma empresa, muitos dados são transferidos pela rede e os servidores estão em carga constante, portanto, é uma situação comum que uma simples consulta SQL INSERT ou SELECT levará de 1 a 2 minutos ou até falhará com o tempo limite / erro de rede. >

Há alguma prática recomendada para lidar com essas situações? É claro que posso dividir meu aplicativo em thread GUI e thread DB para que os problemas de rede não levem à GUI congelada. Mas o que fazer com muitos erros de rede? Exibi-los para o usuário muitas vezes não será muito bom :(. Estou pensando em criação automática de cópia local de um banco de dados em cada computador meu aplicativo está sendo executado: primeiro atualizando banco de dados local e sincronizá-lo em segundo plano, simples repetindo erros de rede. Isso permitirá que um aplicativo funcione caso a rede tenha grandes atrasos / problemas.

Quaisquer sugestões e chavões, o que eu posso olhar? Talvez sejam algumas das melhores práticas já disponíveis que eu não sei:)

    
por grigoryvp 27.11.2009 / 15:32

2 respostas

1

Você pode realmente querer verificar porque uma rede interna está rodando tão lentamente. Se uma instrução select simples levar de 1 a 2 minutos para concluir, parece que há algo muito errado com a configuração da rede.

No que diz respeito à sua melhor prática, a potência do servidor de banco de dados será uma boa coisa. Quanto mais rápido o processador, mais memória melhor será a carga de trabalho do processamento de dados. A maioria dos bancos de dados executará uma consulta uma vez e, em seguida, armazenará seu plano de execução para a mesma consulta, para todos, depois que ela for mais rápida.

Se você não pode fazer nada sobre as configurações de rede, você sempre pode trabalhar em um tipo de ambiente desconectado . Provavelmente não é a melhor coisa a fazer se houver muita manipulação de dados. Olhe para o uso de DataSets para manter seus dados depois de serem extraídos do banco de dados.

Isso é muita informação, espero que ajude alguns.

    
por 27.11.2009 / 15:56
1

Se você tiver

very limited experience of database programming

e é um

common situation that a simple INSERT or SELECT SQL query will take 1-2 minutes or even fail with timeout / network error.

então seus problemas provavelmente não são da rede. Eu procuraria ganhar mais experiência em trabalho de banco de dados, otimização de consulta e práticas de codificação antes de problemas de rede. IMHO é muito mais fácil hackear uma rede razoavelmente boa (com pouca ou nenhuma experiência), então é hackear um programa funcional com acesso ao banco de dados.

    
por 27.11.2009 / 16:10

Tags