Pergunta

Estou criando este pequeno programa de utilitário (formulários do Windows) e precisaria economizar um pouco de dados no disco. Em termos de dB, seria cerca de uma tabela, não mais do que cerca de milhares de linhas, cada linha com menos de 1 kb de tamanho.

O que você usaria?

Adicionado: Esqueci de dizer - seria realmente legal se todo o programa fosse apenas um arquivo .exe (mais o arquivo de dados, é claro). Assim, eu preferiria algo que é incorporado .NET.

Foi útil?

Solução

Sqlite.Et é pequeno e tem Ótimo invólucro para .net.

Outras dicas

Ou há eSent, o banco de dados incorporado que existe em todas as cópias do Windows. Leia sobre isso aqui: http://ayende.com/blog/archive/2008/12/23/hidden-windows-gems-extensible-storage-engine.aspx

Se você está se sentindo corajoso, reuni um documento simples DB Piedb (como em 'fácil como').

Você pode usar o SQL Server Compact Edition (fornecido com Visual Studio) ou Sqlite.

Existem muitos outros, mas esses são os mais comuns.

Sou um grande fã de Sqlite, porque é minúsculo, simples e rápido. Há um incrível Provedor ADO.NET para ele, que suporta a estrutura da entidade.

Se você está falando de uma única tabela, não consigo entender por que você sente que precisa usar um banco de dados relacional para atingir seus objetivos. Que tal um único arquivo?

Naturalmente, dependendo do motivo pelo qual você precisa armazenar informações e da maneira como os dados estão relacionados, pode haver um motivo para você precisar de um banco de dados. Mas você deve considerar se um banco de dados é realmente o que você precisa neste caso.

Um banco de dados relacional não deve ser o padrão defacto para armazenar dados. Existem muitas alternativas que você deve considerar antes de selecionar o RDBMS.

Veja a postagem de McIntyre321, por exemplo.

Se você está definido usando um banco de dados incorporado, o SQL Server Compact Edition é provavelmente a sua melhor aposta seguida pelo SQLite como um segundo próximo.

Se você está falando de uma tabela, parece que um banco de dados incorporado pode ser um exagero e você pode ser melhor servido por um arquivo de texto simples.

Você pode criar uma matriz da sua classe, marcá-la [serializável] e apenas usar os métodos serializados/desserializados para persistência.

Eu segundo a votação do SQLite. O SQL Server CE é muito pesado para quaisquer fins incorporados, a menos que você precise de fácil sincronização com um banco de dados central - então é fantástico.

A porta .NET de sqlite está em http://code.google.com/p/csharp-sqlite/. É puro .NET para que você possa ir em um único .exe

Para algo tão pequeno e simples, eu provavelmente iria com XML e não usaria um banco de dados. Se você abstrair o código CRUD, poderá modificar posteriormente a parte de camada de dados do código para que ele use um banco de dados quando os dados crescem em tamanho e complexidade.

Depois de investigar o mesmo problema. De todos os candidatos possíveis, dois pareciam bons. Estes são sqlite e Firebird (Firebirdsql.org). Mas o Firebird tinha mais alguns recursos do que o SQLite.

Up: Aqui uma informação interessante sobre Firebird+Dotnet http://www.firebirdsql.org/dotnetfirebird/embedded/index.html

Berkeley DB também é uma boa opção para o banco de dados incorporado. E há um biblioteca Isso fornece uma interface .NET 2.0 para isso.

Se não precisar ser um banco de dados compatível com SQL, também procuraria o DB4O. DB4O é um banco de dados de objeto para Java e .Net. A versão .NET está completamente escrita em C#.

Segundo o SQL Lite ou um arquivo XML simples com o Writer Deflate para minimizar o tamanho. Rápido e não tão sujo.

Tente este: https://github.com/mdsoftware/mdata. Não incluíram todas as fontes de 3ª partes, todas as coisas legais, como processamento de dados e compilador de expressão do tipo LISP. Eu tentei fazer algo realmente simples, mas funcional.

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