Eu herdei um aplicativo que armazena dados em várias tabelas no Microsoft Access; o banco de dados do Access é usado apenas para armazenamento, todo o processamento de dados é tratado pelo aplicativo (VB.net).
Esta é uma boa prática? Preciso criar um aplicativo semelhante do zero e não tenho certeza do que é uma prática 'normal'.
Eu tentei pesquisar a questão em vários formatos e verifiquei vários resultados (incluindo muitos neste fórum), mas todas as perguntas parecem estar relacionadas a onde você está programando no Access, em vez de simplesmente usá-lo para armazenamento de dados.
Acho que poderia ser mais específico e dizer que o SQL Server Express ou similar seria uma opção melhor e, em caso afirmativo, por que?
Se você está lendo este post devido a uma pergunta semelhante, consulte este link fornecido por @DanielB abaixo - /programming/694921/ms-access-mdb-concurrency
Respostas:
Os bancos de dados MSAccess normalmente não são usados por alguns motivos. No passado, eles eram esquisitos e não aceitavam várias conexões ao mesmo tempo. Quando o banco de dados MSAccess está sendo usado, um arquivo de bloqueio é criado (ldb). Quando esse arquivo de bloqueio está presente, ninguém mais pode acessar o banco de dados. Descobri que quando havia um aplicativo de uso único, o desempenho do MSAccess seria severamente prejudicado após cerca de 50 mil linhas. Provavelmente é melhor agora, mas certamente não foi ajustado para usos maiores.
O mais típico é usar um sistema de banco de dados mais robusto, como postgres, mysql ou MSSQL. Para bancos de dados de conexão única, usei o Derby (com Java).
No que diz respeito ao VB, você não encontrará soluções profissionais usando o VB como software cliente para um banco de dados. Bem, talvez haja algumas soluções sendo vendidas, mas pessoalmente, eu as evitaria.
Normalmente, seu processamento será feito em uma linguagem como C #, C ++, Java, Perl, Python ou outras linguagens populares. As bibliotecas serão usadas para conectar-se ao banco de dados separado do idioma. Algumas soluções usarão o SQL para consultar e receber dados e outras usarão uma biblioteca de persistência para criar objetos a partir dos dados (isso está se tornando mais comum).
No que diz respeito às melhores práticas, sempre achei melhor ser consistente. Se você tem uma loja com quatro pessoas que entendem o MSAccess e o VisualBasic, faz muito sentido continuar fazendo dessa maneira. Se houver um objetivo na empresa de se afastar devido a falhas no passado, você poderá continuar usando o VB e alternar para outro banco de dados. Examinar tabelas de vinculação no MSAccess - usei um aplicativo VB em um banco de dados MSSQL vinculando as tabelas MSSQL a um banco de dados MSAccess. O VB não sabia a diferença entre uma tabela ingênua do MSAccess e uma tabela vinculada localizada em outro servidor. A solução VB ainda era esquisita, mas funcionava muito melhor com conjuntos de dados maiores.
Espero que isto ajude!
fonte
Eu tive alguma experiência com esse problema no passado em uma grande corporação.
À medida que a base de usuários cresce, surgem problemas de segurança e desempenho, porque os arquivos do Access onde os dados residiam precisavam ser armazenados em uma pasta compartilhada da rede e todos os usuários tinham que ter acesso W / R a eles.
Isso não é teórico, é uma experiência do mundo real; os bancos de dados do Access não se adaptam bem a dezenas de usuários simultâneos, muito menos a algumas centenas de pessoas espalhadas geograficamente.
Com sistemas de banco de dados gratuitos e bons como o PostgreSQL disponíveis, há poucas razões para usar o Access, exceto o seguinte: falta de conhecimento técnico.
fonte
Pessoalmente, se você é capaz de se afastar do acesso, tive clientes que realmente sofreram porque simplesmente não podiam ou não "mordiam a bala".
Como Kieveli mencionou, os bancos de dados do Access são horríveis quando se trata de armazenar grandes quantidades de dados, lembre-se de que os aplicativos sempre devem ser projetados com o benefício para o usuário final. Imagine que você tem um escritório cheio de pessoas que têm um sistema terrivelmente lento perdendo horas do seu tempo toda semana?
Falando da experiência pessoal, mover um banco de dados de acesso para o SQL Server não é tão doloroso, desde que você planeje corretamente, a questão é: você possui as habilidades técnicas internas para mudar para algo como vb.net etc.
fonte
Os bancos de dados de acesso não escalam bem, mas são fáceis de manipular e distribuir. Se você estiver usando um Mapeador Relacional de Objetos (O / R-mapper) suportando diferentes tipos de banco de dados como uma interface para seu banco de dados, seu aplicativo dependerá muito menos de um tipo específico de banco de dados. Isso permite que você inicie com o Access e mude para outro banco de dados posteriormente.
Eu fiz isso uma vez e iniciei um projeto com o Access e um front-end em C #, porque os bancos de dados podem ser configurados e desenvolvidos muito facilmente com o Access. Mais tarde, mudei para um banco de dados Oracle porque meu cliente possui um banco de dados Oracle. Apenas algumas alterações foram necessárias no meu aplicativo.
fonte
Jet-SQL está terrivelmente documentado. Só isso é uma razão para eu ficar longe do Access.
/programming/11265817/where-can-i-find-a-complete-reference-for-microsoft-access-sql
O T-SQL (SQL Server), por outro lado, é muito mais flexível e você pode encontrar toneladas de documentação, blogs e especialistas que podem ajudá-lo.
É claro que o Access é um banco de dados da área de trabalho, enquanto o SQL Server é um banco de dados cliente-servidor completo.
Existem alguns outros bancos de dados de desktop por aí (eu tenho usado o Advantage Database Server, mas esse também é um produto de nicho).
fonte