¿Cuál es una buena opción de base de datos para una pequeña aplicación .NET? [cerrado]


180

Estoy desarrollando una pequeña aplicación con C # en .NET y quiero tener una base de datos pequeña y liviana que no use muchos recursos.

¿Podría enumerar algunos de los softwares de bases de datos de peso ligero más conocidos ?


Respuestas:


192

14/06/2016 Sí ... sigue recibiendo votos a favor: - /


17/03/2014 Todavía estoy recibiendo votos a favor por esto, tenga en cuenta la fecha en que se respondió originalmente. Aunque los tres elementos principales enumerados siguen siendo completamente viables, la lista tenderá a volverse obsoleta. Hay más tecnologías de bases de datos disponibles que no están en la lista.


Tiene un par de opciones inmediatamente reconocibles y gratuitas:

La descarga de SQL Server Compact viene con el proveedor ADO.NET al que deberá hacer referencia en el código. Es posible que la descarga de SQLite no lo tenga, así que aquí hay un enlace:

http://sqlite.phxsoftware.com/

Los tres usan SQL, aunque probablemente con algunas limitaciones / peculiaridades. Management Studio funciona con Compact y LocalDB, mientras que con SQLite necesitará otra herramienta de interfaz de usuario como SQLite Administrator:

http://sqliteadmin.orbmu2k.de/

Hay alternativas NoSQL, como:

Personalmente, evitaría usar MS Access frente a otras opciones gratuitas. No puedes equivocarte con LocalDB, Compact o SQLite. Todas son pequeñas y encantadoras bases de datos que se ejecutan relativamente rápido en poca RAM: preferencia personal en cuanto a los aspectos religiosos de que me guste un producto de Microsoft, supongo :-)

Uso la programación de Sterling para Windows Phone, ya que está diseñada para usar el almacenamiento aislado. Solo he visto artículos sobre RavenDb, pero puedo decirle que es un marco de almacenamiento de documentos basado en JSON.

Para no confundir la situación (vaya con SQLite, SQL Server Express LocalDB o SQL Server Compact Edition), pero hay otras bases de datos integradas / locales, algunas son relacionales y otras están orientadas a objetos:

No todos estos son gratuitos. El soporte SQL / LINQ / in-proc difiere entre todos ellos. Esta lista es solo por curiosidad.

Ahora también está Karvonite , sin embargo, el enlace de la galería de códigos está roto. Cuando vuelva a estar en vivo, buscaré este para el desarrollo de WP7.


11
+1 para SQL Server CE. En lugar de instalar un servidor SQL junto con su aplicación, puede usar los dlls de SQL Server CE y tener un archivo de base de datos en el directorio de trabajo de su aplicación. Sencillo.
Phil

2
RavenDB es de hecho una base de datos de documentos, pero su API es mucho más poderosa que simples pares de nombre y valor. El problema es que no es gratuito para proyectos comerciales en caso de que esté buscando alternativas gratuitas.
JCallico

@JCallico Admito que estaba generalizando un poco con el resumen, pero dudo que alguien tome lo que he dicho como evangelio.
Adam Houldsworth

@Brendan Long, no existe una implementación de SQL que pueda decirse que sea 100% estándar.
Pop Catalin

1
En lugar de dejar el pequeño mensaje difícil de leer en la parte superior de su respuesta que explica que la información está desactualizada. Puede ser más fácil simplemente actualizar y / o agregar su respuesta e incluir algunos ejemplos de opciones disponibles en la actualidad.
James Shaw

58

Recomiendo SQLite . Lo estamos utilizando para casi todas las aplicaciones que desarrollamos donde trabajo.

Es pequeño y compacto. Requiere una DLL para estar en el directorio de la aplicación, pero no es necesario que tenga otro software instalado como Access o SQL Server. Además, como lo indica danielkza a continuación, "SQLite es de dominio público, por lo que no tiene que preocuparse en absoluto por las licencias". Eso realmente puede hacer una gran diferencia.

Puede usar System.Data.SQLite o csharp-sqlite para acceder a él en una aplicación C # usando los mismos métodos que SQL u OleDB.

También necesitará una aplicación para editar / administrar la base de datos. El mejor en mi opinión es SQLite Studio . Aquí hay un par más:
SQLite Admin
SQLite 2009 Pro (parte inferior de la página)
Actualización - 25/07/11 - Más aplicaciones SQLite (pregunta aquí sobre SO)

Aquí hay más sobre SQLite:
SQLite en Wikipedia
Empresas que usan SQLite

Funciones personalizadas: además, si está buscando en las funciones principales de SQLite y no ve una que le guste, puede crear sus propias funciones personalizadas. Aquí hay un par de ejemplos: del ejemplo
SO
Anoter


8
Una adición: SQLite es de dominio público, por lo que no tiene que preocuparse en absoluto por las licencias.
danielkza

@MikeWebb ¿Sqlite funcionará con aplicaciones ClickOnce sin necesidad de instalar ningún servicio adicional o algo? ¿Funcionará si está en un recurso compartido de red para múltiples usuarios concurrentes?
Prokurors

1
@Prokurors: todo lo que SQLite necesita para ejecutarse es el archivo DLL correspondiente al lenguaje que está utilizando en su programa (C ++, C #, etc.). No se requieren otros servicios o programas. Además, debería funcionar en una red con usuarios concurrentes. Tenemos una copia en funcionamiento en un servidor donde trabajo y funciona muy bien. Puede ver más sobre la concurrencia aquí: sqlite.org/lockingv3.html
Mike Webb

10

Firebird integrado puede ser una buena opción

La versión incrustada es una sorprendente variación del servidor. Es un servidor Firebird con todas las funciones empaquetado en solo unos pocos archivos. Es muy fácil de implementar, ya que no es necesario instalar el servidor.

Hay algunos muy buenos controladores de red de puntos


8

SQL Server Compact si desea utilizar la solución oficial de microsoft. Esto tiene la ventaja de poder usar la replicación con el servidor SQL si necesita ese tipo de cosas.

SQLite si quieres algo muy simple, pequeño y gratis. Esto es lo que Android usa para sus bases de datos internas, por lo que es muy compatible y hay muy buenos enlaces .NET disponibles.

Una ventaja distintiva de SQLite es que es multiplataforma. Entonces, si quisiera portar su aplicación a Mono.NET, entonces no tendría que realizar modificaciones en la implementación de la base de datos.

No me gusta MS Access para esta solución, pero mucha gente la ha incluido en su respuesta. Está limitado debido al formato propietario y la dependencia de la plataforma. Sin embargo, tiene sus ventajas. Puede manipular datos fácilmente si tiene una copia de MS Access, puede crear consultas gráficamente y crear macros. Puede integrarlo fácilmente con el resto de MS Office.

De todos estos SQLite sería mi recomendación debido a que es tan compacto, bien documentado y respaldado por un creciente ejército de colegas desarrolladores, independientemente de la plataforma.

EDITAR

Me di cuenta de que hay otra opción que todos aquí olvidaron mencionar

Mientras no necesite tablas relacionales, puede usar el archivo CSV leído como un conjunto de datos a través de ADO.NET. (Más una sugerencia lulz que cualquier otra cosa, pero sería adecuada en algunos casos y no requiere bibliotecas adicionales para una implementación de MS.


8

Si está creando un proyecto con .NET 4.0.2 o superior y desea compatibilidad con bases de datos integradas, considere SQL Server Express LocalDB .

Es una adición relativamente nueva a la familia Express que presenta un espacio de instalación más pequeño y una sobrecarga administrativa reducida (en comparación con otras ediciones de Express), pero mantiene los aspectos de programabilidad de SQL Server. Es decir, a diferencia de Compact Edition, LocalDB no requiere la instalación de un proveedor ADO.NET separado para comunicarse con SQL.

Vea lo siguiente para más detalles:

SQL Express v LocalDB v SQL Compact Edition (Blogs de MSDN)
SQL LocalDB vs SQL Server CE (desbordamiento de pila)


7

1
O específicamente para .NET, es posible que desee ver RavenDB
marc_s

Mongo, aunque encantador, no se ejecuta integrado: debe iniciar un proceso de servidor separado, que puede ser un poco pesado para los propósitos del OP.
Mike Woodhouse

Mongodb no es compatible con SQL. el autor de la pregunta quiere "dónde puedo guardar y recuperar registros mediante consultas SQL". Y lo que es más, mongodb tiene hambre de memoria. No lo recomiendo para este caso de uso.
Peter Long

4

Podrías usarlo Sql Server Express Editioncomo gratis y es igualmente poderoso hasta y a menos que quieras una funcionalidad como mirroringetc. Echa un vistazo a esto .


8
La pregunta dice "No necesito nada poderoso". SQL Server Express NO es una versión ligera de SQL Server. Es una versión de tamaño limitado de base de datos y tiene un gran impacto en el inicio de la PC de los usuarios a medida que comienzan los servicios. Es excesivo para esta pregunta. SQL Server Compact es más adecuado.
Moog

2

He usado db4o con éxito.
Basada en archivos, gran comunidad, fácil de usar.

http://www.db4o.com/

Detalles de licencia

Licencia pública general gratuita db4o se licencia bajo la GPL por defecto.

La licencia GPL es ideal si planea usar db4o internamente o si planea desarrollar y distribuir su propio trabajo derivado como software libre también bajo la GPL.

Licencia comercial Se requiere una licencia comercial si desea incrustar db4o en un producto comercial no GPL. Los licenciatarios comerciales obtienen acceso a servicios y soporte premium.


Usé db4o durante 6 meses en 2012. Si hubiera alguna forma de evitar problemas con la imposibilidad de acceder a datos antiguos después de que cambie el modelo de objetos, votaría esta respuesta. Hasta donde yo sé, es difícil evitar perder datos antiguos si cambias tus objetos. La conclusión es siempre mantener una copia de seguridad de sus datos en otro lugar en un formato diferente, no db4o (que de todos modos es una regla bastante genérica).
Contango

2

Una alternativa que no se ha mencionado si no requiere que sea una base de datos gratuita es VistaDB. Todo es código administrado, proporciona toneladas de características para una base de datos integrada y ofrece un rendimiento bastante bueno. Un puente bastante bueno entre SQL CE y SQL Server Express ya que la mayoría de los procedimientos almacenados de VistaDB se ejecutarán sin modificaciones en SQL Server Express. También he estado bastante satisfecho con el servicio al cliente en este momento. Lo he estado usando en el trabajo. No hay servicios para comenzar. Una base de datos vacía es de alrededor de 1 MB y la DLL también es bastante ligera. Tiene proveedores de ADO.NET y esas cosas. Me ha gustado mucho.

VistaDB


¡Hola! ¿Funciona en un escenario multiusuario? Por ejemplo, ¿puedo almacenar este VistaDB en un recurso compartido de red y acceder a él simultáneamente desde varios usuarios?
Prokurors

1
Tiene algunas habilidades limitadas a este respecto. Obviamente, no puede reemplazar una verdadera base de datos que se ejecuta con un motor de base de datos local en ese cuadro, pero ofrece algunas opciones transaccionales. Estábamos planeando usarlo en ese escenario, ya que parecía que lo manejaría mejor que cualquiera de las opciones gratuitas que encontramos y nuestros clientes probablemente no tendrían la experiencia para configurar el servidor SQL o lo que sea. Ofrece más funciones que sqlce pero no tanto como el servidor sql completo. Es una pieza de software de calidad real.
Plataforma

¡Gracias por la información! Y su nueva versión esperada 5 suena muy prometedora. ¿Has probado Entity Framework con VistaDB? ¿Quizás incluso creó primero el archivo VistaDB con el código EF?
Prokurors

1
Lo hice pero esto fue hace unos 3-4 años. En ese momento encontré que funcionaba bien y esa fue mi primera experiencia de EF. Supongo que es mejor ahora. Lo único que faltaba en ese momento era que ciertos segmentos de la documentación eran escasos, pero eso fue durante la transición después de que fue comprada por sus ahora propietarios.
Plataforma

1
PD: Al menos en el momento en que lo usé, estaban más que dispuestos a proporcionar una licencia de demostración para su uso. Le recomiendo que lo pruebe antes de comprometerse con el costo de la licencia.
Aparejo

1

SQL Server Compact Edition es mejor, ya que es gratuito y de tamaño ligero e integra bien


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.