2009-07-02 7 views
1

Je me suis intéressé à l'utilisation de DBfDotNet pour stocker certaines données de capteur. Pour quiconque ne sait pas de quoi je parle, c'est un moteur de base de données écrit en C#, jetez un coup d'œil sur codeplex ou sur cet article très bon codeproject. La base de données à laquelle il est comparé pour les timings dans l'article codeproject est sqlite.Quels sont les problèmes avec les bases de données de fichiers simples?

D'après les tests que j'ai effectués, il est nettement plus rapide que les autres bases de données intégrées que j'ai essayées. Il s'agit essentiellement d'une base de données d'objets, donc nous pouvons simplement enregistrer la date et ne pas avoir à se soucier de choses horribles comme ADO.NET, ORM et SQL!

Avec 500k lignes dans le fichier, une requête comme:

IEnumerable<People> result = peoples.Where<People>(x => x.dob < DateTime.Now.AddYears(-30) 
                && x.dob > DateTime.Now.AddYears(-10) 
                && x.name.StartsWith("Ca") 
               ); 

a pris environ 5 secondes.

Alors, quels seraient les inconvénients de l'utilisation d'une base de données comme celle-ci? Un problème est que les colonnes dans le fichier de base de données sont de largeur fixe, donc si les données variaient, l'espace serait gaspillé. Les données que je cherche à stocker sont fixes largeur de toute façon donc ce ne serait pas un problème pour moi.

Il n'est pas sûr pour les threads. Ce n'est pas un problème pour moi mais cela pourrait toujours être ajouté en tant que wrapper facultatif.

Aussi son loin de ACID et une panne lors d'une écriture pourrait causer quelques problèmes!

Répondre

1

Sans entrer dans des questions fonctionnelles, envisager de soutenir. Y a-t-il suffisamment de développeurs sur le projet et les utilisateurs du projet pour s'assurer que les bogues peuvent être corrigés rapidement?

Ou d'une autre manière: le gain de temps dans le développement est-il justifié si vous perdez toutes vos données en raison d'un défaut de ce moteur?

Vous pouvez également sauvegarder les fichiers de données pendant leur utilisation ou avez-vous besoin d'un mécanisme pour mettre les données du capteur en mémoire tampon lors de la sauvegarde?

+0

Je suppose que le soutien est le principal problème que je vais avoir. J'ai l'impression que je pourrais essayer de régler la plupart des problèmes et j'ai lu toutes les sources. Mais c'est très différent de tout ce que j'ai écrit et je ne veux pas vraiment avoir 6 mois en bas de la ligne et avoir un appel me disant qu'une base de données ne s'ouvre pas! – Tim

Questions connexes