Pergunta

Preciso de um banco de dados que possa ser armazenado em uma unidade de rede e permita que vários usuários (até 20) o usem sem nenhum software de servidor.

Estou considerando o MS Access ou o Berkeley DB.

Você pode compartilhar sua experiência com bancos de dados de arquivos?
Qual você usou, teve algum problema com ele?

Foi útil?

Solução

eu sugeriria SQLite porque todo o banco de dados é armazenado em um único arquivo e lida com segurança com vários usuários que o acessam ao mesmo tempo.Existem várias bibliotecas diferentes que você pode usar para seu aplicativo cliente e não há necessidade de software de servidor.

Um dos pontos fortes é que ele imita os servidores SQL tão de perto que, se você precisar converter o uso de um arquivo de banco de dados para um SQL Server completo, a maioria das consultas no cliente não precisará ser alterada.Você só precisará migrar os dados para o novo banco de dados do servidor (o que não ficaria surpreso se houvesse programas para converter bancos de dados SQLite em bancos de dados MySQL, por exemplo).

Outras dicas

Eu realmente não acho que bancos de dados baseados em arquivos possam passar de meia dúzia de usuários.A última vez que tive um banco de dados Access (reconheço que isso foi há um bom tempo), tive que trabalhar muito para fazê-lo funcionar para 8 a 9 pessoas.

É realmente muito mais fácil instalar o Ubuntu em um computador antigo com PostgreSQL ou MySQL.Isso é o que eu tive que fazer mesmo quando mantive meu front-end do Access.

Cuidado com qualquer banco de dados baseado em arquivo, pois todos provavelmente terão os mesmos problemas.Sua situação realmente exige uma solução Cliente/Servidor.

Das perguntas frequentes do SQLite

Uma boa regra geral é que você deve evitar o uso de sqlite em situações em que o mesmo banco de dados será acessado simultaneamente a partir de muitos computadores em um sistema de arquivos de rede.

http://www.sqlite.org/whentouse.html

O acesso pode ser uma merda.Eu estive na posição em que tive que dizer a 20 a 50 pessoas para fechar o acesso para que eu pudesse ir para o "modo de design" para alterar o design dos formulários e talvez de uma coluna.Não é nada divertido.(Acesso antigo e pode ser apenas uma configuração ruim)

Ayende recentemente tentei tomar uma decisão semelhante e tentei vários dos chamados bancos de dados incorporados.Esperemos que o dele observações pode ajudá-lo.

Uso o Access há algum tempo e em diversas situações, inclusive on-line.Descobri que o Access funciona bem se estiver configurado corretamente de acordo com o diretrizes.Uma vantagem do Access é que ele inclui tudo em um pacote:Formulários, construção de consultas, relatórios, gerenciamento de banco de dados e VBA.Além disso, funciona bem com todos os outros aplicativos do Office.O tempo de execução do Access 2007 pode ser obtido gratuitamente em aqui, o que torna a distribuição menos dispendiosa.O acesso certamente não é adequado para grandes operações, mas deve ser bastante adequado para vinte usuários.EDITAR: Microsoft coloca o número de usuários simultâneos em 255.

O Access pode ser configurado para suportar de 10 a 20 usuários?Sim.No entanto, ele, assim como todos os bancos de dados baseados em arquivos, usam o sistema de arquivos para bloqueio e controle de simultaneidade.E os arquivos de dados do Access são mais suscetíveis à corrupção do banco de dados do que os servidores de banco de dados.E, embora você possa configurá-lo para isso, você DEVE, como David Fenton menciona acima, seguir as práticas recomendadas, se quiser obter um sistema confiável.

Pessoalmente, acho que, dados os obstáculos que você precisa superar para garantir que uma solução do Access seja razoavelmente livre de problemas, é muito menos problemático implementar uma instância do MSDE/SQL Server Express ou postgreSql.

O Berkeley DB suporta um alto grau de simultaneidade (muito mais que 20), mas o faz principalmente utilizando memória compartilhada e mutexes (possivelmente até mesmo replicação) - recursos que não funcionam bem quando o BDB é implantado como um arquivo armazenado em uma unidade de rede.

Para aproveitar as vantagens dos recursos de simultaneidade do DBD, você terá que construir um aplicativo em torno dele.

A pergunta original não faz sentido para mim, pois as opções não pertencem umas às outras.BerkeleyDB é apenas um mecanismo de banco de dados, enquanto o Access é uma ferramenta de desenvolvimento de aplicativos que vem com um mecanismo de banco de dados padrão baseado em arquivo (ou seja, não servidor) (Jet).Em virtude de colocar o Access em Berkeley, parece óbvio que o que é necessário é apenas um mecanismo de banco de dados e nenhum aplicativo, mas não sei como os usuários finais usam o Berkeley DB sem front-end (usei-o apenas na linha de comando).

Aqueles que não conseguem executar um Jet MDB com 20 usuários simultâneos simplesmente não são competentes para aconselhar sobre o uso do Jet como armazenamento de dados.É totalmente factível, desde que as melhores práticas sejam seguidas.Eu recomendaria, além da página de práticas recomendadas da Microsoft, Melhores práticas de Tony Toews, e Perguntas frequentes sobre corrupção de Tony (ou seja, coisas que você deseja evitar para ter um aplicativo estável).

Duvido muito que o questionador original não esteja construindo nenhum aplicativo front-end, mas como ele não indica que tipo de front-end está envolvido, é difícil recomendar um back-end que o acompanhe.O Access tem a vantagem de fornecer as duas partes da equação e, quando usado corretamente, é perfeitamente confiável para vários usuários.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top