Est une base de données le bon choix pour le stockage de données pour mon application C #?

StackOverflow https://stackoverflow.com/questions/3514284

  •  29-09-2019
  •  | 
  •  

Question

Je développe une application C # et je veux être sûr que je choisis le meilleur choix pour le stockage de données répondant à ces spécifications.

Le programme peut avoir une quantité infinie de données, mais que les données ne seront utilisées que par un seul utilisateur qui utilise l'application. Chaque fois que l'application est fermée, je dois enregistrer les données, et il doit être chargé lorsque l'application est lancée.

J'ai regardé des bases de données, mais je ne suis pas certain de ce qui serait le mieux adapté à mes besoins. Aussi, je me demande si je besoin d'une base de données du tout étant donné les spécifications ci-dessus, peut-être que je devrais utiliser un fichier binaire / fichier XML et la mise en œuvre sérialisation désérialisation.

point moi dans la bonne direction s'il vous plaît!

Merci, OC

EDIT: Un facteur important que j'oublié d'inclure est la nécessité de permettre à un utilisateur d'enregistrer toutes les entrées qu'il / elle a participé et l'exporter vers un fichier externe qui peut être facilement partagée entre les applications / utilisateurs .

Était-ce utile?

La solution

Sans en savoir plus sur ce que votre application spécifique fait, il est difficile (pour nous) de dire si une base de données est le bon choix. Cependant, il y a quelques règles de base que vous pouvez utiliser pour aider à orienter votre décision.

Une base de données peut être un bon choix lorsque:

  • Les données peuvent être utilisées par plusieurs utilisateurs.
  • Lorsque l'activité simultanée est possible qui doit être correctement stocké.
  • Lorsque les données recueillies ne pas tous besoin d'être chargé en mémoire à la fois.
  • Lorsque vous souhaitez pouvoir interroger ou d'un rapport sur les données de façon complexe.
  • Lorsque vous voulez avoir la transparence dans les données stockées à l'aide des outils standard.
  • Lorsque des modifications sont principalement localisées plutôt que d'exiger l'ensemble datastore à reconstruire.
  • Lorsque vos données se prête à un relationnel (plutôt que de dire une représentation hiérarchique).

Une base de données ne peut pas être le meilleur choix:

  • Vous ne servir qu'un seul utilisateur.
  • Il y a peu d'activité concurrente, et doit être recréée l'ensemble du modèle de données lors de l'enregistrement des modifications.
  • Quand il y aura très peu de données, et il sera chargé dans la mémoire à la fois.
  • Lorsque vous des données est hiérarchique ou difficile à modéliser relationnellement.
  • Lorsque votre application est orientée document, et les documents (fichiers) seront envoyés à d'autres utilisateurs.
  • Quand il y a une quantité importante de données binaires entrecoupées dans les données de votre stockage.
  • Lorsque vous voulez éviter les dépendances à outils ou services de tiers.
  • Lorsque la structure de votre modèle de données est susceptible de changer fréquemment.

Ce sont toutes les règles empiriques ... aucune condition ne va dicter si vous souhaitez utiliser une base de données ou non. Vous devez examiner toutes les considérations, et de décider si l'utilisation d'une base de données vous donnera suffisamment d'avantages -. Ou non

Dans de nombreux environnements, (tels que l'iPhone, par exemple), il y a une couche de base de données intégrée directement sur la plate-forme. Il existe également des outils (comme NSCoreData) qui vous aident à surmonter la modélisation objet-relationnel (ORM) non-concordance d'impédance. Dans de tels cas, il peut faire beaucoup de sens d'utiliser une base de données jamais pour le stockage de données très simple.

Il y a aussi un certain nombre de données open source la persistance des couches (NHiberante, db4o et autres) qui aident à simplifier l'aide d'une base de données comme un magasin de persistance ... qui, si vous pouvez les utiliser, peut changer l'équation en faveur de en utilisant une base de données.

Une base de données peut simplifier considérablement le développement de votre application lorsque vous devez prendre en charge les requêtes ou la fonctionnalité de recherche. bases de données relationnelles prennent en charge un langage de requête (SQL), qui déplace l'effort d'identification et de récupération des résultats de la base de données beaucoup plus facile. Laisser la base de données ne la levée de lourds peut être un gain de temps important - que les bases de données sont spécialement conçues pour effectuer correctement et efficacement les opérations requête. Toutefois, cela se fait au prix d'une structure de données relationnelle bien conçue -. Que vous devez créer

Une considération importante, est de savoir si les utilisateurs partagent les données qu'ils créent / consomment en utilisant votre application. Si votre demande est plus orientée vers le document (pensez Word, Excel, Powerpoint), puis un modèle de sérialisation basé sur des fichiers peut être plus approprié. Si les données de votre application ne seront pas partagées -. Puis une base de données peut donner un sens

Un autre facteur important est le degré d'ouverture que vous voulez que vos données soient. Les bases de données stockent des informations dans des structures bien définies (tables), ce qui rend plus facile pour vous (et vos utilisateurs) d'accéder directement et inspectez les données. formats de stockage comme XML, permettent également, mais dans une moindre mesure.

Autres conseils

Une base de données client complet / serveur comme MySQL ou SQL Server serait probablement trop pour un seul utilisateur. Mais vous auriez probablement obtenir une certaine utilisation d'un moteur embarqué / basé sur des fichiers comme SQLite ou CE SQL Server , surtout si vous voulez faire plus avec les données que seulement rechercher des enregistrements uniques par ID. Si vous avez fait le stockage de données vous-même, vous auriez à des charges d'écriture de code pour obtenir des documents répondant à certains critères, et je tous, mais vous garantissez pas aussi bien à ce que les gens qui le font pour gagner leur vie.

Personnellement, pour moi son plus sur les données que le nombre d'utilisateurs utilisant une application.

Pensez à vos données, est-il complexe? Si vous deviez créer en fait une base de données la taille serait-il en termes d'objets, pas le nombre de lignes ... combien de tables etc ...

Pensez à l'avenir, bien que son seul utilisateur, les données vont encore augmenter, je présume, et le volume de données sera sauvé à chaque fois?

L'approche de base de données permettra d'accélérer votre développement sans aucun doute - et vos données aura une meilleure intégrité qu'un fichier XML. Je déteste utiliser des fichiers personnellement ... J'ai eu des expériences dans le passé où les données ont disparu etc à partir du fichier.

Rappelez-vous, il y a toujours SQL Compact Edition si vous voulez garder vos ressources limitées.

Si vous implémentez vos fonctions de stockage dans un référentiel 1) 2), vous pouvez commencer par le stockage des fichiers, puis de passer à un stockage de base de données si vous identifiez plus tard besoin de le faire

1) http://martinfowler.com/eaaCatalog/repository.html
2) https://web.archive.org/web/20110503184234/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/10/08/the-repository-pattern.aspx

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