O que é uma boa escolha de banco de dados para um aplicativo .NET pequeno? [fechadas]


180

Estou desenvolvendo um pequeno aplicativo com C # no .NET e quero ter um pequeno banco de dados leve que não use muitos recursos.

Você poderia listar alguns dos softwares de banco de dados de peso leve mais conhecidos .


Respostas:


192

14/06/2016 Sim ... ainda recebendo votos: - /


17/03/2014 Ainda estou recebendo votos positivos por isso, lembre-se da data em que isso foi respondido originalmente. Embora os três principais itens listados ainda sejam totalmente viáveis, a lista tenderá a ficar obsoleta. Existem outras tecnologias de banco de dados disponíveis que não estão listadas.


Você tem algumas opções imediatamente reconhecíveis e gratuitas:

O download do SQL Server Compact vem com o provedor ADO.NET que você precisará fazer referência no código. O download do SQLite pode não ter, então aqui está um link:

http://sqlite.phxsoftware.com/

Todos os três usam SQL, embora provavelmente com algumas limitações / peculiaridades. O Management Studio funciona com o Compact e o LocalDB, enquanto que com o SQLite você precisará de outra ferramenta de interface do usuário, como o SQLite Administrator:

http://sqliteadmin.orbmu2k.de/

Existem alternativas NoSQL, como:

Pessoalmente, eu evitaria usar o MS Access em face de outras opções gratuitas. Você não pode dar errado com o LocalDB, Compact ou SQLite. Todos eles são bancos de dados pequenos e adoráveis, que são executados relativamente rapidamente em pouca RAM - preferência pessoal quanto aos aspectos religiosos de gostar de um produto da Microsoft, suponho :-)

Eu uso a programação do Sterling para Windows Phone, pois foi criada para usar o Armazenamento Isolado. Eu só vi artigos no RavenDb, mas posso dizer que é uma estrutura de armazenamento de documentos baseada em JSON.

Para não confundir a situação (vá com SQLite, SQL Server Express LocalDB ou SQL Server Compact Edition), mas existem outros bancos de dados locais / incorporados por aí, alguns são relacionais, outros são orientados a objetos:

Nem todos são gratuitos. O suporte a SQL / LINQ / in-proc difere em todos eles. Esta lista é apenas por curiosidade.

Agora também há Karvonite , no entanto, o link da galeria de códigos está quebrado. Quando estiver ao vivo novamente, analisarei este para o desenvolvimento do WP7.


11
+1 Para o SQL Server CE. Em vez de instalar um servidor SQL ao lado do seu aplicativo, você pode apenas usar as dlls do SQL Server CE e ter um arquivo de banco de dados no diretório de trabalho do seu aplicativo. Simples.
19411 Phil

2
O RavenDB é realmente um banco de dados de documentos, mas sua API é muito mais poderosa do que pares simples de nome e valor. O problema é que não é gratuito para projetos comerciais, caso você esteja procurando alternativas gratuitas.
JCallico

@JCallico Admito que estava generalizando um pouco com o resumo, mas duvido que alguém aceite o que eu disse como evangelho.
Adam Houldsworth

@Brendan Long, não existe uma implementação SQL por aí que você possa dizer que é 100% padrão.
Pop Catalin

1
Em vez de deixar a pequena mensagem de difícil leitura no topo da sua resposta, que explica que as informações estão desatualizadas. Pode ser mais fácil atualizar e / ou anexar à sua resposta e incluir alguns exemplos de opções disponíveis hoje.
James Shaw

58

Eu recomendaria SQLite . Estamos usando-o para quase todos os aplicativos que desenvolvemos onde trabalho.

É pequeno e compacto. Requer que uma DLL esteja no diretório do aplicativo, mas você não precisa ter outro software instalado, como o Access ou o SQL Server. Além disso, como afirma danielkza abaixo, "SQLite é de domínio público, portanto você não precisa se preocupar com o licenciamento". Isso pode realmente fazer uma grande diferença.

Você pode usar System.Data.SQLite ou csharp-sqlite para acessá-lo em um aplicativo C # usando os mesmos métodos que os do SQL ou OleDB.

Você também precisará de um aplicativo para editar / gerenciar o banco de dados. O melhor na minha opinião é SQLite Studio . Aqui estão mais algumas:
Admin do
SQLite SQLite 2009 Pro (parte inferior da página)
Atualização - 25/7/11 - Mais aplicativos SQLite (pergunta aqui no SO)

Veja mais sobre SQLite:
SQLite na Wikipedia
Empresas que usam SQLite

Funções personalizadas: Além disso, se você estiver procurando nas funções principais do SQLite e não encontrar uma que goste, pode criar suas próprias funções personalizadas. Aqui estão alguns exemplos:
Do exemplo do SO
Anoter


8
Uma adição: o SQLite é de domínio público, portanto você não precisa se preocupar com o licenciamento.
Danielkza 19/07

@MikeWebb O Sqlite funcionará com aplicativos ClickOnce sem precisar instalar nenhum serviço adicional ou algo assim? Funcionará se estiver em um compartilhamento de rede para vários usuários simultâneos?
Prokurors

1
@ Prokurors - Tudo o que o SQLite precisa executar é o arquivo DLL correspondente ao idioma que você está usando no seu programa (C ++, C #, etc). Não há outros serviços ou programas necessários. Além disso, ele deve funcionar em uma rede com usuários simultâneos. Temos uma cópia em execução em um servidor onde eu trabalho e funciona muito bem. Você pode ver mais sobre simultaneidade aqui: sqlite.org/lockingv3.html
Mike Webb

10

Firebird incorporado pode ser uma boa escolha

A versão incorporada é uma variação incrível do servidor. É um servidor Firebird completo, com poucos arquivos. É muito fácil de implantar, pois não há necessidade de instalar o servidor.

Existem alguns drivers de ponto líquido muito bons


8

SQL Server Compact se você deseja usar a solução oficial da Microsoft. Isso tem a vantagem de poder usar a replicação com o SQL server se você precisar desse tipo de coisa.

SQLite se você quiser algo muito simples, pequeno e gratuito. Isso é o que o Android usa para seus bancos de dados internos, por isso é muito bem suportado e há muito boas ligações .NET disponíveis.

Uma vantagem distinta do SQLite é que ele é multiplataforma. Portanto, se você quisesse portar seu aplicativo para o Mono.NET, não teria nenhuma modificação a fazer na implementação do banco de dados.

Não gosto do MS Access para esta solução, mas muitas pessoas a incluíram em sua resposta. É limitado devido ao formato proprietário e à dependência da plataforma. Mas tem suas vantagens. Você pode manipular os dados facilmente se tiver uma cópia do MS Access, criar consultas graficamente e criar macros. Você pode integrá-lo facilmente ao restante do MS Office.

De todas essas SQLite, seria minha recomendação, por ser tão compacta, bem documentada e suportada por um exército crescente de colegas desenvolvedores, independentemente da plataforma.

EDITAR

Percebi que há outra opção que todo mundo aqui esqueceu de mencionar

Desde que você não precise de tabelas relacionais, poderá usar o arquivo CSV lido como um conjunto de dados via ADO.NET. (Mais uma sugestão lulz do que qualquer outra coisa, mas seria adequado em alguns casos e não requer bibliotecas adicionais para uma implantação do MS.


8

Se você estiver criando um projeto com .NET 4.0.2 ou superior e desejar suporte a banco de dados incorporado, considere o SQL Server Express LocalDB .

É uma adição relativamente nova à família Express, que possui uma área de instalação menor e sobrecarga de gerenciamento reduzida (quando comparado a outras edições do Express), mas mantém os aspectos de programação do SQL Server. Ou seja, diferente do Compact Edition, o LocalDB não requer a instalação de um provedor ADO.NET separado para se comunicar com o SQL.

Consulte o seguinte para obter mais detalhes:

SQL Express v LocalDB v SQL Compact Edition (Blogs do MSDN)
SQL LocalDB vs SQL Server CE (Estouro de Pilha)


7

1
Ou especificamente para .NET que você pode querer olhar para RavenDB
marc_s

O Mongo, embora adorável, não roda incorporado - você precisa iniciar um processo de servidor separado, que pode ser um pouco pesado para os propósitos do OP.
30511 Mike Ontário

O Mongodb não suporta sql. o solicitante deseja "onde eu posso salvar e recuperar registros por consultas SQL". Além disso, o mongodb está com fome de memória. Eu não o recomendo para este caso de uso.
Peter Long

4

Você pode usar Sql Server Express Editioncomo gratuito e é igualmente poderoso até e a menos que queira funcionalidades como mirroringetc. Dê uma olhada nisso .


8
A pergunta afirma: "Não preciso de nada poderoso". O SQL Server Express NÃO é uma versão leve do SQL Server. É uma versão limitada do tamanho de um banco de dados e tem um grande impacto na inicialização do PC dos usuários quando os serviços são iniciados. É um exagero para esta pergunta. O SQL Server Compact é mais adequado.
Moog

2

Eu usei o db4o com sucesso.
Comunidade grande, baseada em arquivos, simples de usar.

http://www.db4o.com/

Detalhes de Licenciamento

Licença Pública Geral Grátis db4o está licenciada sob a GPL por padrão.

A licença GPL é ideal se você planeja usar o db4o internamente ou planeja desenvolver e distribuir seu próprio trabalho derivado como software livre sob a GPL também.

Licença Comercial É necessária uma licença comercial se você deseja incorporar o db4o em um produto comercial que não seja da GPL. Os licenciados comerciais obtêm acesso a serviços e suporte premium.


Usei o db4o por 6 meses em 2012. Se houvesse alguma maneira de evitar problemas com a impossibilidade de acessar dados antigos após a alteração do modelo de objeto, eu recomendaria esta resposta. Tanto quanto eu sei, é difícil evitar a perda de dados antigos se você alterar seus objetos. A linha inferior é sempre manter uma cópia de backup dos seus dados em outro lugar em um formato diferente do db4o (que é uma regra bastante genérica de qualquer maneira).
Contango

2

Uma alternativa que não foi mencionada se você não precisar que seja um banco de dados gratuito é o VistaDB. É todo o código gerenciado, oferece vários recursos para um banco de dados incorporado e oferece um desempenho muito bom. Uma ponte muito boa entre o SQL CE e o SQL Server Express, já que a maioria dos procedimentos armazenados do VistaDB será executada sem modificação no SQL Server Express. Também fiquei bastante satisfeito com o atendimento ao cliente neste momento. Eu tenho usado no trabalho. Não há serviços para iniciar. Um banco de dados vazio tem cerca de 1 MB e a DLL também é bastante leve. Tem provedores ADO.NET e coisas assim. Eu gostei um pouco.

VistaDB


Oi! Funciona no cenário multiusuário? Por exemplo, posso armazenar este VistaDB em um compartilhamento de rede e acessá-lo simultaneamente de vários usuários?
Prokurors

1
Faz algumas habilidades limitadas a esse respeito. Obviamente, ele não pode substituir um verdadeiro banco de dados em execução por um mecanismo de banco de dados local nessa caixa, mas oferece algumas opções transacionais. Estávamos planejando usá-lo nesse cenário, pois parecia que ele iria lidar com isso melhor do que qualquer uma das opções gratuitas que encontramos e nossos clientes provavelmente não teriam o conhecimento necessário para configurar o servidor sql ou o que quer. Ele oferece mais recursos que o sqlce, mas não tanto quanto o servidor sql completo. É um software de qualidade real.
Rig

Obrigado pela informação! E a nova versão esperada 5 parece muito promissora. Você já experimentou o Entity Framework com o VistaDB? Talvez até tenha criado o arquivo VistaDB com o código EF primeiro?
Prokurors

1
Eu fiz, mas isso foi cerca de 3-4 anos atrás. Nesse ponto, achei que funcionava bem e essa foi minha primeira experiência com a EF. Presumo que esteja melhor agora. O único que faltava na época era que alguns segmentos da documentação eram escassos, mas isso ocorreu durante a transição depois que ela foi comprada pelos seus proprietários agora.
Rig

1
PS: Pelo menos na época em que o usei, eles estavam mais do que dispostos a fornecer uma licença demo para uso. Eu recomendo que você tente antes de se comprometer com o custo da licença.
Rig

1

Servidor SQL Compact Edition melhor, pois é gratuito e leve em tamanho e integra bem


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.