Quel est un bon choix de base de données pour une petite application .NET? [fermé]


180

Je développe une petite application avec C # en .NET et je souhaite 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 certains des logiciels de base de données légers les plus connus .


Réponses:


192

14/06/2016 Oui ... toujours en hausse: - /


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


Vous avez quelques 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/

Tous 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 fonctionnent relativement rapidement dans peu de RAM - préférence personnelle 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 cadre de stockage de documents basé sur JSON.

Ne pas confondre la situation (utilisez SQLite, SQL Server Express LocalDB ou SQL Server Compact Edition), mais il existe d'autres bases de données intégré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 entre eux. Cette liste est juste pour la curiosité.

Il y a maintenant aussi Karvonite , mais le lien de la galerie de code est rompu. Quand il sera à nouveau en ligne, je vais examiner celui-ci pour le développement de WP7.


11
+1 Pour SQL Server CE. Plutôt que d'installer un serveur SQL avec votre application, vous pouvez simplement utiliser les DLL SQL Server CE et avoir un fichier de base de données dans le répertoire de travail de votre application. Facile.
Phil

2
RavenDB est en effet une base de données de documents, mais son API est beaucoup plus puissante que de simples paires de noms et de valeurs. Le problème est que ce n'est pas gratuit pour les projets commerciaux au cas où vous recherchiez des alternatives gratuites.
JCallico

@JCallico J'admets que je généralisais un peu le résumé, mais je doute que quiconque prendrait ce que j'ai dit comme un évangile.
Adam Houldsworth

@Brendan Long, il n'y a pas d'implémentation SQL là-bas dont vous pouvez dire qu'elle est 100% standard.
Pop Catalin

1
Au lieu de laisser le petit message difficile à lire en haut de votre réponse qui explique que les informations sont obsolètes. Il peut être plus facile de simplement mettre à jour et / ou ajouter à votre réponse et inclure quelques exemples d'options disponibles aujourd'hui.
James Shaw

58

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

C'est petit et compact. Il faut qu'une DLL soit dans le répertoire de l'application, mais vous n'avez pas besoin d'installer d'autres logiciels comme Access ou SQL Server. De plus, comme indiqué par danielkza ci-dessous, "SQLite est du domaine public, vous n'avez donc pas à vous soucier 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 - Plus d'applications SQLite (question ici sur SO)

En savoir plus sur SQLite:
SQLite sur Wikipedia
Entreprises qui utilisent SQLite

Fonctions personnalisées: en plus, si vous recherchez dans les fonctions SQLite Core et que vous n'en voyez pas une que vous aimez, vous pouvez créer vos propres fonctions personnalisées. Voici quelques exemples:
De l' exemple SO
Anoter


8
Un ajout: SQLite est du domaine public, vous n'avez donc pas à vous soucier des licences.
danielkza

@MikeWebb Sqlite fonctionnera-t-il avec les applications ClickOnce sans avoir besoin d'installer un service supplémentaire ou quelque chose? Cela fonctionnera-t-il s'il se trouve sur un partage réseau pour plusieurs utilisateurs simultanés?
Prokurors

1
@Prokurors - Tout ce dont SQLite a besoin pour s'exécuter est le fichier DLL correspondant au langage que vous utilisez dans votre programme (C ++, C #, etc.). Aucun autre service ou programme n'est requis. En outre, il devrait fonctionner sur un réseau avec des utilisateurs simultanés. Nous avons une copie opérationnelle sur un serveur sur lequel je travaille et cela fonctionne très bien. Vous pouvez en savoir plus sur la concurrence ici: sqlite.org/lockingv3.html
Mike Webb

10

Firebird intégré peut être un bon choix

La version intégrée est une variante étonnante du serveur. C'est un serveur Firebird complet emballé dans seulement quelques fichiers. Il est très facile à déployer, car il n'est pas nécessaire d'installer le serveur.

Il existe de très bons pilotes dot net


8

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

SQLite si vous voulez quelque chose de très simple, petit et gratuit. C'est ce qu'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 multiplateforme. Donc, si vous vouliez porter votre application sur Mono.NET, vous n'auriez aucune modification à apporter à l'implémentation 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 à la plate-forme. Il a cependant ses avantages. Vous pouvez manipuler facilement les données 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 tous ces SQLite, ma recommandation serait car il est si compact, bien documenté et pris en charge par une armée croissante de collègues développeurs, quelle que soit la plate-forme.

ÉDITER

J'ai réalisé qu'il y a 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 comme un 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

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

Il s'agit d'un ajout relativement récent à la famille Express qui présente une empreinte d'installation plus petite et des frais de gestion réduits (par rapport aux autres éditions d'Express), tout en conservant les aspects de programmabilité de SQL Server. Autrement dit, contrairement à Compact Edition, LocalDB ne nécessite pas l'installation d'un fournisseur ADO.NET distinct pour communiquer avec SQL.

Voir ce qui suit 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)


7

1
Ou spécifiquement pour .NET, vous voudrez peut-être regarder RavenDB
marc_s

Mongo, bien que charmant, ne fonctionne pas intégré - vous devez démarrer un processus serveur séparé, ce qui peut être un peu lourd pour les besoins de l'OP.
Mike Woodhouse

Mongodb ne prend pas en charge SQL. le demandeur veut "où je peux sauvegarder et récupérer des enregistrements par des requêtes SQL". Et de plus, mongodb a faim de mémoire. Je ne le recommande pas pour ce cas d'utilisation.
Peter Long

4

Vous pouvez l'utiliser Sql Server Express Editiongratuitement et est tout aussi puissant jusqu'à ce que et à moins que vous ne vouliez des fonctionnalités comme mirroringetc. Jetez un œil à ceci .


8
La question dit "Je n'ai besoin de rien de puissant". SQL Server Express n'est PAS une version allégée de SQL Server. Il s'agit d'une version limitée à la taille de la base de données et a un impact important sur le démarrage du PC des utilisateurs lorsque les services démarrent. C'est exagéré pour cette question. SQL Server Compact est plus adapté.
Moog

2

J'ai utilisé db4o avec succès.
Basée sur un fichier, 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 prévoyez d'utiliser db4o en interne ou si vous prévoyez de développer et de distribuer votre propre travail dérivé en tant que logiciel libre sous GPL également.

Licence commerciale Une licence commerciale est requise si vous souhaitez intégrer db4o dans un produit commercial non GPL. Les titulaires de licence commerciale ont accès à des services et à une assistance premium.


J'ai utilisé db4o pendant 6 mois en 2012. S'il y avait un moyen d'éviter les problèmes de ne pas pouvoir accéder aux anciennes données après le changement de modèle d'objet, je voterais pour cette réponse. Autant que je sache, il est difficile d'éviter de perdre d'anciennes données si vous modifiez vos objets. L'essentiel est de toujours conserver une copie de sauvegarde de vos données ailleurs dans un format différent, non db4o (qui est de toute façon une règle assez générique).
Contango

2

Une alternative qui n'a pas été mentionnée si vous n'avez pas besoin d'une base de données gratuite est VistaDB. Tout est du code 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écuteront sans modification dans SQL Server Express. Je suis également très satisfait du service client à ce stade. Je l'utilise au travail. Aucun service à démarrer. Une base de données vide fait environ 1 Mo et la DLL est également assez légère. A des fournisseurs ADO.NET et d'autres choses. J'ai bien aimé ça.

VistaDB


Salut! Fonctionne-t-il dans un scénario multi-utilisateur? Par exemple, puis-je stocker cette VistaDB sur un partage réseau et y accéder simultanément à partir de plusieurs utilisateurs?
Prokurors

1
Il a des capacités limitées à cet égard. Évidemment, il ne peut pas remplacer une véritable base de données fonctionnant avec un moteur de base de données local sur cette boîte, mais il offre quelques options transactionnelles. Nous prévoyions de l'utiliser dans ce scénario car il semblait qu'il le gérerait mieux que toutes les options gratuites que nous avons rencontrées et nos clients n'auraient probablement pas l'expertise nécessaire pour configurer le serveur SQL ou autre. Il offre plus de fonctionnalités que sqlce mais pas autant qu'un serveur SQL complet. C'est un véritable logiciel de qualité.
Rig

Merci pour l'information! Et leur nouvelle version 5 attendue semble très prometteuse. Avez-vous essayé Entity Framework avec VistaDB? Peut-être même créé un fichier VistaDB avec EF Code en premier?
Prokurors

1
Je l'ai fait, mais c'était il y a environ 3-4 ans. À ce stade, j'ai trouvé que cela fonctionnait bien et c'était ma première expérience EF. Je suppose que c'est mieux maintenant. Le seul défaut dont il disposait à l'époque était que certains segments de la documentation étaient rares, mais c'était pendant la transition après son achat par leurs propriétaires actuels.
Rig

1
PS: Au moins au moment où je l'ai utilisé, ils étaient plus que disposés à fournir une licence de démonstration pour l'utilisation. Je vous recommande vivement de l'essayer avant de vous engager dans le coût de la licence.
Rig

1

SQL Server Compact Edition est le meilleur car il est gratuit et léger et s'intègre bien


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.