web-dev-qa-db-fra.com

Quel est le bon choix de base de données pour une petite application .NET?

Je développe une petite application avec C # dans .NET et je veux avoir une petite base de données légère qui n’utilise pas beaucoup de ressources.

Pourriez-vous s'il vous plaît énumérer quelques-uns des meilleurs logiciels de base de données légers connus.

177
ePezhman

14/06/2016 Oui ... toujours avoir des votes positifs: - /


17/03/2014 Je reçois toujours des votes positifs pour cela, soyez conscient de la date à laquelle cette réponse a été initialement fournie. Bien que les trois principaux éléments énumérés soient encore entièrement viables, la liste tendra à devenir obsolète. Il existe d'autres technologies de base de données disponibles qui ne sont pas répertoriées.


Vous avez plusieurs options immédiatement reconnaissables et gratuites:

Le téléchargement de SQL Server Compact est fourni avec le fournisseur ADO.NET que vous devrez référencer dans le code. Le téléchargement de SQLite peut ne pas l'avoir alors voici un lien:

http://sqlite.phxsoftware.com/

Les trois utilisent SQL, bien que probablement avec quelques limitations/bizarreries. Management Studio fonctionne avec Compact et LocalDB, alors qu'avec SQLite, vous aurez besoin d'un autre outil d'interface utilisateur tel que SQLite Administrator:

http://sqliteadmin.orbmu2k.de/

Il existe des alternatives NoSQL, telles que:

Personnellement, j'éviterais d'utiliser MS Access face à d'autres options gratuites. Vous ne pouvez pas vous tromper avec LocalDB, Compact ou SQLite. Ce sont toutes de jolies petites bases de données qui tournent assez rapidement dans peu de RAM - préférences personnelles quant aux aspects religieux de l’appréciation d’un produit Microsoft, je suppose :-)

J'utilise Sterling pour la programmation Windows Phone, car il est conçu pour utiliser le stockage isolé. Je n'ai vu que des articles sur RavenDb, mais je peux vous dire qu'il s'agit d'un framework de stockage de documents basé sur JSON.

Ne pas confondre la situation (allez avec SQLite, SQL Server Express LocalDB ou SQL Server Compact Edition), mais il existe d'autres bases de données incorporées/locales, certaines sont relationnelles, d'autres sont orientées objet:

Tous ne sont pas gratuits. La prise en charge de SQL/LINQ/in-proc diffère selon l’ensemble. Cette liste est juste pour la curiosité.

Il y a maintenant aussi Karvonite , cependant le lien de la galerie de codes est cassé. Quand il sera en direct, je me pencherai sur celui-ci pour le développement de WP7.

191
Adam Houldsworth

Je recommanderais SQLite . Nous l'utilisons pour presque toutes les applications que nous développons où je travaille.

C'est petit et compact. DLL doit figurer dans le répertoire de l'application, mais vous n'avez pas besoin d'installer un autre logiciel tel qu'Access ou SQL Server. En outre, comme indiqué par danielkza ci-dessous, "SQLite est un domaine public, vous n'avez donc pas à vous soucier de la gestion des licences". Cela peut vraiment faire une grande différence.

Vous pouvez utiliser System.Data.SQLite ou csharp-sqlite pour y accéder dans une application C # en utilisant les mêmes méthodes que celles de SQL ou OleDB.

Vous aurez également besoin d'une application pour éditer/gérer la base de données. Le meilleur à mon avis est SQLite Studio . En voici quelques autres:
SQLite Admin
SQLite 2009 Pro (bas de la page)
Mise à jour - 25/07/11 - Plusieurs applications SQLite (question ici sous SO)

Voici plus sur SQLite:
SQLite sur Wikipedia
Entreprises qui utilisent SQLite

Fonctions personnalisées: En outre, si vous regardez dans le SQLite Core Functions et n'en voyez pas un qui vous plait, vous pouvez créer vos propres fonctions personnalisées. Voici quelques exemples:
de SO
Exemple précédent

56
Mike Webb

Firebird embedded peut être un bon choix

La version intégrée est une variation étonnante du serveur. Il s’agit d’un serveur Firebird complet contenant quelques fichiers. Il est très facile à déployer car il n’est pas nécessaire d’installer le serveur.

Il y a de très bons dot net pilotes

10

Si vous construisez un projet avec .NET 4.0.2 ou une version ultérieure et que vous souhaitez une prise en charge de base de données intégrée, envisagez SQL Server Express LocalDB .

Il s’agit d’un ajout relativement nouveau à la famille Express, qui se caractérise par un encombrement réduit de l’installation et une surcharge de gestion (par rapport aux autres éditions d’Express), tout en maintenant les aspects de programmabilité de SQL Server. Ainsi, contrairement à Compact Edition, LocalDB ne nécessite pas l’installation d’un fournisseur ADO.NET distinct pour communiquer avec SQL.

Voir ci-dessous pour plus de détails:

SQL Express v LocalDB v SQL Compact Edition (blogs MSDN)
SQL LocalDB vs SQL Server CE (débordement de pile)

8
Robert Mooney

SQL Server Compact si vous souhaitez utiliser la solution Microsoft officielle. Cela présente l'avantage de pouvoir utiliser la réplication avec SQL Server si vous avez besoin de ce genre de chose.

SQLite si vous voulez quelque chose de tres simple petit et gratuit. C’est ce que Android utilise pour ses bases de données internes. Il est donc très bien pris en charge et de très bonnes liaisons .NET sont disponibles.

Un avantage distinct de SQLite est qu'il est multi-plateforme. Donc, si vous vouliez porter votre application sur Mono.NET, aucune modification ne serait apportée à la mise en œuvre de la base de données.

Je n'aime pas MS Access pour cette solution, mais beaucoup de gens l'ont incluse dans leur réponse. Il est limité en raison du format propriétaire et de la dépendance de la plate-forme. Il a ses avantages cependant. Vous pouvez manipuler les données facilement si vous avez une copie de MS Access, vous pouvez créer des requêtes graphiquement et créer des macros. Vous pouvez facilement l'intégrer au reste de MS Office.

Parmi toutes ces solutions, SQLite serait ma recommandation, car elle est si compacte, bien documentée et soutenue par une armée grandissante de développeurs, quelle que soit leur plate-forme.

EDIT

J'ai réalisé qu'il y avait une autre option que tout le monde ici a oublié de mentionner

Tant que vous n'avez pas besoin de tables relationnelles, vous pouvez utiliser un fichier CSV lu en tant qu'ensemble de données via ADO.NET. (Plus d'une suggestion de lulz qu'autre chose mais conviendrait dans certains cas et ne nécessite pas de bibliothèques supplémentaires pour un déploiement MS.

8
Merlin
7
nWorx

Vous pouvez utiliser Sql Server Express Edition comme libre et est tout aussi puissant jusqu’à ce que vous souhaitiez des fonctionnalités comme mirroring etc. Regardez this .

4
FIre Panda

J'ai utilisé db4o avec succès.
Base de fichiers, grande communauté, simple à utiliser.

http://www.db4o.com/

Détails de la licence

Licence publique générale gratuite db4o est sous licence GPL par défaut.

La licence GPL est idéale si vous envisagez d'utiliser db4o en interne ou si vous envisagez de développer et de distribuer votre propre travail dérivé en tant que logiciel libre sous GPL.

Licence commerciale Une licence commerciale est requise si vous souhaitez intégrer db4o à un produit commercial non-GPL. Les détenteurs de licences commerciales ont accès à des services et à un support premium.

2
Jeremy Gray

Une alternative qui n’a pas été mentionnée si vous n’exigez pas qu’elle soit une base de données gratuite est VistaDB. Tout ce code est géré, fournit des tonnes de fonctionnalités pour une base de données intégrée et offre de très bonnes performances. Un assez bon pont entre SQL CE et SQL Server Express puisque la majorité de vos procédures stockées VistaDB s'exécutent sans modification dans SQL Server Express. Je suis également assez satisfait du service à la clientèle. Je l'utilise au travail. Aucun service pour commencer. Une base de données vide correspond à environ 1 Mo et la DLL est également très légère. Contient des fournisseurs ADO.NET, entre autres choses. Je l’aimais bien.

VistaDB

2
Rig

Le serveur SQL Compact Edition est le meilleur logiciel gratuit, de taille légère et bien intégré.

1
panindra

SQL Server Express ou MS Access

0
Barry Kaye