2009-10-16 10 views
9

Estoy haciendo este pequeño programa de utilidad (Windows Forms) y necesitaría guardar un poco de datos en el disco. En términos de DB, se trataría de una tabla, no más de unas dos mil filas, cada fila tiene menos de 1 KB de tamaño.¿Qué opciones hay para una base de datos incrustada rápida en .NET?

¿Qué usarías?

Agregado: olvidaba decir - que sería muy interesante si todo el programa sería un solo archivo .EXE (más el archivo de datos, por supuesto). Por lo tanto, preferiría algo que esté integrado en .NET.

Respuesta

23

SQLite .Es pequeño y tiene great wrapper para .Net.

+0

+1. No sabía sobre el contenedor para .NET. Muy genial. –

+1

Y el puerto .NET http://code.google.com/p/csharp-sqlite/ – mcintyre321

+0

Al igual que una advertencia adicional para el contenedor SQLite, es compatible con LINQ. –

8

Puede usar SQL Server Compact Edition (provisto con Visual Studio) o SQLite.

Hay muchos otros, pero estos son los más comunes.

Soy un gran admirador de SQLite, porque es pequeño, simple y rápido. Hay un impresionante ADO.NET provider para él, que es compatible con Entity Framework.

3

Si está configurado utilizando una base de datos incrustada, entonces SQL Server Compact Edition es probablemente su mejor opción seguida de SQLite como segundo cercano.

Si está hablando de una tabla, parece que una base de datos incrustada podría ser excesiva y que podría ser mejor atendido por un simple archivo de texto.

2

En segundo lugar el voto para SQLite. SQL Server CE es demasiado pesado para propósitos integrados a menos que necesite una sincronización fácil con una base de datos central, entonces es fantástico.

4

Si está hablando de una sola tabla, no puedo entender por qué siente que TIENE que usar una base de datos relacional para lograr sus objetivos. ¿Qué tal un solo archivo?

Naturalmente, dependiendo de la razón por la que necesita almacenar información y la forma en que se relacionan los datos, puede haber una razón para que necesite una base de datos. Pero deberías considerar si un DB es realmente lo que necesitas en este caso.

Una base de datos relacional no debe SER el estándar de facto para almacenar datos. Hay muchas alternativas que debe considerar antes de seleccionar el RDBMS.

Vea la publicación de mcintyre321, por ejemplo.

+0

Es curioso cómo la gente ve la palabra "DB" e inmediatamente se quedan bloqueados pensando en DBMS. ¿Dije en alguna parte que quería un DBMS completo? De hecho, estaba pensando más en soluciones de archivos planos, serialización XML y similares. Me preguntaba qué harían otras personas y por qué o por qué no elegirían algunas soluciones. +1 –

+0

Me gustaría saber cuál sería el formato de archivo plano más rápido y la biblioteca para consultarlo. El problema más común es que no tiene el beneficio de un índice cuando busca archivos planos sin un motor detrás de escena para generar los índices. –

+0

Eso bordearía ser DBMS embebido e integrado. Los archivos planos son planos porque no tienen índices. EN MI HUMILDE OPINIÓN. –

1

Para algo tan pequeño y simple probablemente iría con XML y no usaría una base de datos. Si abstrae el código CRUD, puede modificar posteriormente la porción del nivel de datos del código para que utilice una base de datos cuando los datos crezcan en tamaño y complejidad.

0

Si no tiene que ser una base de datos compatible con SQL, entonces también vería Db4o. Db4o es una base de datos de objetos para Java y .NET. La versión de .NET está completamente escrita en C#.

3

Puede crear una matriz de su clase, marcarla [Serializable] y simplemente usar los métodos incorporados de serialización/deserialización para la persistencia.

1

Una vez que investigué el mismo problema. De todos los posibles candidatos, dos se veían bien. Estos son SQLite y Firebird (firebirdsql.org). Pero el Firebird tenía algunas características más que SQLite.

UPD: Aquí una información interesante acerca de pájaro de fuego + dotnet http://www.firebirdsql.org/dotnetfirebird/embedded/index.html

+0

+1 para nombrar una alternativa a SQLite – tobsen

0

Me segunda SQL Lite o un simple archivo XML con el escritor desinflado para minimizar el tamaño. Rápido y no tan sucio.

1

Berkeley DB es también una buena opción para la base de datos integrada. Y hay un library que proporciona una interfaz .NET 2.0 para él.

0

Pruebe este: https://github.com/mdsoftware/mData. No hay terceros, todas las fuentes incluidas, algunas cosas agradables como el compilador de expresión y procesamiento de datos similar a Lisp también están incluidos. Intenté hacer algo realmente simple pero funcional.

Cuestiones relacionadas