Pergunta

Eu escrevi um aplicativo de desktop do Windows que trabalha com Sqlite muito bem. Foi um único aplicativo de usuário eo banco de dados fica à direita na máquina onde o aplicativo é executado.

No entanto, a aplicação tem crescido, e agora vários usuários devem ser capazes de executar o aplicativo e se conectar a um banco de dados compartilhado.

Eu gostaria de apenas ser capaz de compartilhar o arquivo sqlite em uma unidade de rede, mas que, obviamente, resultar em dados corrompidos a menos que alguém tiver alguma idéia.

Eu acho que eu poderia exigir a instalação de um servidor de banco de dados, mas uma licença MySQL comercial não faz sentido, PostgreSQL é suficiente diferente, que eu teria que reescrever um monte de minha candidatura. Eu não tenho trabalhado com Firebird em tudo, então eu não tenho certeza se isso é uma boa solução ou não.

Existem servidores de banco de dados SQLite que podem ser instalados que lidar com as transações de entrada no arquivo de banco de dados SQLite?

Se eu exigir que o cliente faça o download e instalar o MySQL por conta própria, eu tenho que ter uma licença comercial?

Qualquer sugestão ou direção seria ótimo, obrigado.

Foi útil?

Solução

Existem servidores SQLite que tornam possível usar sqlite em um ambiente multi usuário. Leia aqui: http://www.sqlite.org/cvstrac/wiki?p=SqliteNetwork . Eu não sei como essas soluções executar e escala.

Outras dicas

Você pode ser capaz de usar o arquivo SQLite em uma unidade de rede compartilhada como você descreveu, dependendo do sistema de arquivos subjacente:

http://www.sqlite.org/faq.html#q5

Vários processos podem ter o mesmo aberto banco de dados ao mesmo tempo. Vários processos podem estar fazendo um SELECIONE ao mesmo tempo. Mas apenas um processo pode ser fazer alterações no banco de dados a qualquer momento no tempo, no entanto.

SQLite usa bloqueios de leitor / gravador de controlar o acesso ao banco de dados. (Sob Win95 / 98 / ME que não tem suporte para leitor / escritor fechaduras, um probabilística simulação é usado em seu lugar.) Mas o uso Atenção: Este mecanismo de bloqueio poder não funcionar corretamente se o banco de dados arquivo é mantido em um sistema de arquivos NFS. Isto é porque fnctl () bloqueio de arquivo é dividido em muitas implementações de NFS. Você deve evitar colocar SQLite arquivos de banco de dados na NFS se múltipla processos podem tentar acessar o arquivo ao mesmo tempo. No Windows, documentação da Microsoft diz que de bloqueio não pode funcionar sob FAT sistemas de arquivos se você não estiver executando o daemon share.exe. Pessoas que têm uma muita experiência com o Windows me dizer que o bloqueio de arquivos de rede de arquivo é muito buggy e não é confiável. E se o que eles dizem é verdade, uma partilha banco de dados SQLite entre dois ou mais máquinas Windows pode causar problemas inesperados.

E sobre SQL Server Express , sua livre e deve pará-lo ter que reescrever a maior parte de seu código,

Eu acho que Firebird pode ser uma escolha muito boa

  • É gratuito
  • versão integrada exist

Eu não sei por que você assumir que o arquivo de dados será corrompido se você colocá-lo em uma unidade de rede e deixar várias instâncias do seu acesso aplicativo ao mesmo tempo. Se você principalmente a leitura, você deve estar bem. Se você faz um monte de gravações, você provavelmente vai sofrer uma queda de desempenho, uma vez que apenas uma instância pode escrever ao mesmo tempo. (Veja http://www.sqlite.org/faq.html )

Se você faz um monte de gravações, você provavelmente terá uma instalação de servidor autônomo - você já pensou em MS SQL Server Express? Deve ser fácil e simples para se levantar e correr.

Muito tarde Eu sei, mas ninguém nos dias de hoje deve ter uma necessidade de escrever uma aplicação sem um quadro que a abstração de banco de dados oferece.

Pessoalmente eu uso web2py que é uma python baseado na Web Framework. Por padrão, ele usa SQLite que é ótimo para aplicações de um único usuário na área de trabalho local ou pequeno para aplicações médias na rede local que são operações de leitura, principalmente. No entanto, se eu decidi aumentar o escopo do uso de aplicativos, eu simplesmente iria mudar a seqüência de conexão no modal banco de dados para usar outro banco de dados. Web2py ou qualquer outra pena quadro usando simplesmente reescrever as instruções SQL para atender aos novos requisitos.

usar este código em seu seqüência de conexão depois que vários usuários podem inserir, excluir, selecione e.t.c. em seu banco de dados sem problema.

SQLiteConnection con = new SQLiteConnection ( "Data Source = D: \ yourdatabase.db; Contagem Alterações = off; Modo Jornal = off; Pooling = true; Cache Size = 10000; Page Size = 4096; Synchronous = off");

Se eu exigir que o cliente faça o download e instalar o MySQL por conta própria, eu tenho que ter uma licença comercial?

Não.

O valor de uma licença comercial MySQL é que ele permite distribuir MySQL padrão ou um MySQL modificado na forma binária sem o oblihation também para distribuir o código-fonte. Além disso, dá-lhe acesso a suporte.

No entanto, se os obtém usuário si MySQL da Oracle, o GPL coloca nenhuma obrigação em você para fornecer-lhes MySQL de código-fonte. Eles podem começar a partir de Oracle. Na verdade, a Oracle é obrigada a fornecê-lo, contanto que distribua sob a GPL.

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