9
votes

Quelles options sont là pour un DB intégré rapide dans .NET?

Je fais ce petit programme utilitaire (formulaires Windows) et il faudrait économiser un peu de données sur le disque. Dans DB termes, il s'agirait d'une seule table, pas plus d'environ quelques milliers de lignes, chaque rangée étant de moins de 1kb.

Que utiliseriez-vous?

ajouté: J'ai oublié de dire - ce serait vraiment soigné si tout le programme serait un fichier .exe (plus le fichier de données, bien sûr). Ainsi, je préférerais quelque chose qui est intégré à .NET.


0 commentaires

14 Réponses :


23
votes

sqlite est petit et avoir super wrapper pour .NET.


2 commentaires

Tout comme une mise en garde supplémentaire pour l'emballage SQLite, il prend en charge LINQ.


Il aurait dû accepter une réponse ici il y a longtemps! :) Bien que je partageais un simple fichier XML, j'accepterai cela, car il s'agit de l'un des meilleurs RDBM entièrement intégrés.



8
votes

Vous pouvez utiliser SQL Server Compact Edition (fourni avec Visual Studio) ou SQLite .

Il y a beaucoup d'autres, mais ceux-ci sont les plus courants.

Je suis un grand fan de Sqlite, car il est minuscule, simple et rapide. Il y a un superbe fournisseur Ado.net pour celui-ci, qui prend en charge le cadre d'entité.


0 commentaires

1
votes

Le port .NET de SQLite est chez http://code.google.com/ p / csharp-sqlite / . C'est pur .net pour que vous puissiez il peut immerger dans une seule .exe


0 commentaires

3
votes

Si vous êtes défini sur l'utilisation d'un DB intégré, SQL Server Compact Edition est probablement votre meilleur pari suivi de SQLite comme une seconde fermeture.

Si vous parlez d'une table, on sonne comme un dB intégré peut être surchargé et vous pourriez être mieux servi par un simple fichier texte.


0 commentaires

10
votes

ou Theres Esent, la base de données intégrée qui existe dans chaque copie de Windows. Lisez-y ici: http : //AYENDEE.COM/BLOG/ARCHIVE/2008/12/23/HENDENDENDENDENDEND-WINDOWS-GEMS-EXtensible-Storage-Engine.aspx

Si vous vous sentez courageux, j'ai mis en place un simple document db Piedb (comme dans ' facile comme ').


0 commentaires

2
votes

I Deuxièmement, le vote pour SQLite. SQL Server CE est beaucoup trop lourd à des fins incorporées, sauf si vous avez besoin d'une synchronisation facile avec une base de données centrale - alors c'est fantastique.


0 commentaires

4
votes

Si vous parlez d'une seule table, je ne peux pas savoir pourquoi vous pensez que vous devez utiliser une base de données relationnelle pour atteindre vos objectifs. Qu'en est-il d'un seul fichier?

Naturellement, en fonction de la raison pour laquelle vous devez stocker des informations et la manière dont les données sont liées, vous pouvez également avoir besoin d'une DB. Mais vous devez envisager si un DB est en fait ce dont vous avez besoin dans ce cas.

Une base de données relationnelle ne devrait pas être la norme DEFACTO pour stocker des données. Il y a beaucoup de nombreuses alternatives que vous devriez envisager avant de choisir le SGBDM.

Voir la poste de McIntyre321 par exemple.


5 commentaires

Drôle Comment les gens voient le mot "dB" et immédiatement ils sont enfermés en pensant Aboud SGBD. Ai-je dit n'importe où que je voulais un SGBD complet? En effet, je pensais plus aux solutions de fichiers plats, la sérialisation XML et similaires. Je me demandais simplement ce que d'autres personnes feraient et pourquoi ou pourquoi ne choisiraient-ils pas certaines solutions. +1


Je serais curieux de savoir quel est le format de fichier plat le plus rapide et la bibliothèque pour la questionner. Le problème le plus courant est que vous n'avez pas bénéficié d'un index lors de la recherche de fichiers plats avec un moteur de quelque sorte dans les coulisses pour générer les index.


Cela borde-t-il d'être et de la SGBD intégré. Les fichiers plats sont plats car ils n'ont pas d'index. A MON HUMBLE AVIS.


C'est difficile pour moi de commenter votre ce que vous devriez faire depuis que vous n'êtes pas très précis sur le nombre d'enregistrements que vous pensez être en jeu. Vous ne pouvez probablement pas interroger le fichier, vous le charriez à la mémoire et y travaillez-y, et plongez-le au fichier. Ou au moins, pour de petites choses, c'est ce que je ferais. Pour les paramètres et les trucs, il existe de bonnes alternatives telles que l'utilisation d'un fichier XML ou même du format ini-fichier ancien et éprouvé :-)


Vilx, ouais - Je suppose que ce que j'arrête, c'est qu'à un moment donné, il y a un compromis. Si vous avez affaire à dire 1 000 enregistrements, ce qui représente environ 100 ko, je pense que quelque chose comme un fichier XML irait bien car il ne nécessite aucun composant supplémentaire. Mais si vous avez affaire à des quantités massives de données, un fichier plat va être lent et inefficace pour interroger. C'est là que quelque chose comme Sqllite a plus de sens.



1
votes

Pour quelque chose de petit et simple, je voudrais probablement utiliser XML et ne pas utiliser une base de données. Si vous résumez le code de crud, vous pouvez modifier ultérieurement la partie de niveau de données du code afin qu'elle utilise une base de données lorsque les données se développent en taille et en complexité.


0 commentaires

0
votes

S'il ne doit pas nécessairement être une base de données compatible SQL, alors je regarderais également DB4O. DB4O est une base de données d'objets pour Java et .NET. La version .NET est complètement écrite en C #.


0 commentaires

3
votes

Vous pouvez créer un tableau de votre classe, marquez-le [Serializable] et utilisez simplement les méthodes Serialize / désériorize intégrées pour la persistance.


0 commentaires

1
votes

Une fois j'ai enquêté sur le même problème. De tous les candidats possibles deux semblaient bien. Ce sont SQLite et Firebird (Firebirdsql.org). Mais le Firebird avait d'autres fonctionnalités que SQLite.

upd: Voici une information intéressante sur Firebird + dotnet http://www.firebirdsql.org/dotnetfirebird/eMbedded/index.html


0 commentaires

0
votes

I Second SQL Lite ou un fichier XML simple avec défilé de déformation pour minimiser la taille. Rapide et non si sale.


0 commentaires

1
votes

Berkeley DB est également un bon choix pour la base de données embarquée. Et il y a un bibliothèque qui fournit une interface .NET 2.0 pour cela.


0 commentaires

0
votes

Essayez celui-ci: https://github.com/mdsoftware/mdata . Aucune 3e Parties, toutes les sources incluses, de belles choses telles que le traitement de données et l'expression de données LISP. J'ai essayé de faire quelque chose de vraiment simple mais fonctionnel.


0 commentaires