Question

J'ai une application C # qui permet à un utilisateur d'entrer des informations sur les clients et les sites d'emploi. L'information est très basique.

  • Client: Nom, numéro, adresse, email, site de travail associé
  • .
  • Job. Site: Nom, emplacement

Voici mes specs j'ai besoin pour ce programme.

  • Pas de limite de la quantité de données saisies.
  • utilisateur unique par application. Aucune activité concurrente ou plusieurs utilisateurs.
  • Autoriser les entrées utilisateur / données à exporter vers un fichier externe qui peut être facilement partagée entre les applications / utilisateurs.
  • Permet aux requêtes des utilisateurs aux clients d'affichage en fonction de différentes combinaisons d'informations / emploi informations sur le site client.
  • Les données ne sera jamais vu ou manipulé en dehors de l'application.
  • Le programme sera en cours d'exécution presque toujours, réduit dans la barre des tâches.
  • Le temps de démarrage est pas très important, mais je voudrais les requêtes pour être considérablement rapide.

Tout cela me semble pointer vers une base de données, mais très léger. Cependant je dois aussi avoir aucune limite dans la mesure du stockage des données. Si vous êtes d'accord que je devrais utiliser une base de données, s'il vous plaît laissez-moi savoir ce qui serait le mieux adapté à mes besoins. Si vous ne pensez pas que je devrais utiliser une base de données, s'il vous plaît faire quelques autres suggestions sur ce que vous pensez serait le mieux.

Était-ce utile?

La solution

Il me semble une base de données est de 100% ce que vous avez besoin. Il offre à la fois le stockage de données, la récupération de données (y compris les requêtes) et la capacité à exporter des données dans un format standard (soit directement à partir de la base de données ou via votre application.)

Pour une base de données légère, je vous suggère SQLite (prononcez 'SQL Lite';)). Vous pouvez google pour des tutoriels sur la façon de le configurer, puis comment l'interface avec via votre code C #. J'ai aussi trouvé une référence à cette wrapper C # pour SQLite, qui peut être en mesure de faire beaucoup de travail pour vous!

Autres conseils

Ma suggestion serait d'utiliser SQLite. Vous pouvez le trouver ici: http://sqlite.org/ . Et vous pouvez trouver le C # version wrapper ici: http://sqlite.phxsoftware.com/

SQLite est très léger et a des trucs assez puissant pour un moteur léger. Une autre option vous pouvez regarder dans est Microsoft Access.

Vous vous posez encore une fois la mauvaise question:)

La meilleure question est « comment puis-je construire une application qui me permet de changer la mise en œuvre de stockage de données? »

Si vous appliquez le modèle référentiel et correctement interface, il vous pouvez construire des couches de persistance interchangable. Ainsi, vous pouvez commencer par une mise en œuvre et le modifier au besoin wihtout avoir besoin de Restructurer les couches d'affaires ou de l'application.


Une fois que vous avez une interface référentiel vous pouvez essayer les mises en œuvre dans un grand nombre d'approches differnt:

Fichier plat - Vous pouvez persister les données XML, et à condition que ce n'est pas beaucoup de données que vous pouvez stocker tout le contenu en mémoire (lire le fichier au démarrage, écrire le fichier lors de l'arrêt). Avec XML en mémoire, vous pouvez obtenir un débit très élevé sans se soucier des index de base de données, etc.

distribuables DB - SQLite ou SQL travail Compact grande; ils offrent de nombreux avantages à prestations déterminées, et ne nécessitent aucune installation

Local DB - SQL Express est un bon moyen entre un sol léger et complet DB. L'accès, lorsqu'il est utilisé avec soin, peut suffire. Le principal avantage est qu'il est fourni avec MS Office (mais pas installé par défaut), et certains groupes informatiques sont plus à l'aise d'avoir accès installé sur les machines que SQL Express.

Full DB - MySql, SQL Server, PostGreSQL, et al.


Étant donné vos besoins spécifiques, je vous conseille vers un fichier plat basé sur XML - à la seule condition étant que vous êtes OK avec la mémoire utilisation de l'application mettant en corrélation directement à la taille du fichier (vos données sont texte, même avec le poids de XML, cela prendrait un beaucoup des entrées pour devenir très grand).

Voici les avantages / inconvénients - énumérés par vos exigences:

Contre

  • Pas de limite de la quantité de données saisies.
    • en utilisant XML en mémoire signifierait votre application ne serait pas l'échelle. Il pourrait facilement gérer un fichier 10Mo de données, 100MB ne devrait pas être un problème (à moins que votre système est faible sur la RAM), au-dessus que vous avez sérieusement la question « je peux me permettre cette quantité de mémoire? ».

Plus

  • utilisateur unique par application. Aucune activité concurrente ou plusieurs utilisateurs.
      XML
    • peut être lu en mémoire et maintenu par le processus (AppDomain, vraiment). Il est parfaitement adapté pour les scénarios mono-utilisateur où une préoccupation concurrence d'accès est très étroite.
  • Autoriser les entrées utilisateur / données à exporter vers un fichier externe qui peut être facilement partagée entre les applications / utilisateurs.
    • XML est parfait pour l'exportation, et aussi facile à importer dans Excel, bases de données, etc ...
  • Permet aux requêtes des utilisateurs aux clients d'affichage en fonction de différentes combinaisons d'informations sur le site des informations client / emploi.
    • LINQ to XML est votre ami: D
  • Les données ne sera jamais vu ou manipulé en dehors de l'application.
    • .... puis en maintenant entièrement en mémoire ne cause pas de problèmes
  • Le programme sera en cours d'exécution presque toujours, réduit dans la barre des tâches.
    • chargement de sorte que le XML au démarrage et à l'arrêt d'écriture sera acceptible (si le fichier est très grand, il pourrait prendre un certain temps)
  • Le temps de démarrage est pas très important, mais je voudrais les requêtes pour être considérablement rapide
    • La lecture du XML serait relativement lent au démarrage; mais quand il est chargé en mémoire, il sera difficile à battre. Tout DB donné exigera que le moteur de démarrer DB, que Interop / inter-processus / appels inter-réseaux se fait, que les résultats soient chargés à partir du disque (sinon mis en cache par le moteur), etc ...

Que diriez-vous SQLite? On dirait que c'est un bon ajustement pour votre application.

Vous pouvez utiliser System.Data.SQLite comme enveloppe .NET.

Vous pouvez obtenir SQL Server Express gratuitement. Je dirais que la question n'est pas tellement pourquoi devriez-vous utiliser une base de données, plus pourquoi vous ne devriez pas? Ce type de problème est exactement ce que les bases de données sont pour, et SQL Server est une base de données très puissant et largement utilisé, donc si vous allez aller chercher une autre solution ont besoin d'une bonne raison pour laquelle vous ne serait pas aller avec une base de données.

Une base de données serait un bon ajustement. est bon que d'autres ont mentionné SQLite .

Vous pouvez également utiliser une instance locale de SQL Server Express pour profiter de l'amélioration l'intégration avec d'autres pièces de la pile de développement Microsoft (puisque vous mentionnez C #).

Une troisième option est une base de données de documents comme Raven qui peut adapter des sons de vos données.

modifier Une quatrième option serait d'essayer Lightswitch lorsque la bêta sort dans quelques jours. (8-23-2010)
/ modifier
Il va toujours être une limitation de stockage de données (l'espace vide du disque dur). Selon wikipedia, SQL Express est limitée à 10 Go pour SQL Server Express 2008 R2

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top