none
Base de donnée ou pas base de donnée, quelle architecture ? RRS feed

  • Question

  • Bonjour

    Mon appli :

    Tout se passe sur le pc de l'utilisateur, pas d'usage réseau, multi utilisateur ou encore moins en ligne...

    Au départ je récupère une gros volume de données (2Gbit) sous un format propriétaire via une interface USB.

    Je dois ensuite d'une part stocker ces données sur le pc en occupant le moins de volume possible (ce n'est pas critique comme critère). D'autre part je dois pouvoir visualiser ces données (qui représentent les mesures de plusieurs capteurs, toutes basées sur une même échelle de temps) sur des graphiques en jouant sur les échelles.

    Je cherche donc à pourvoir afficher de manière fluide un graphique basé sur tout ou partie d'un grand nombre de points.

    J'ai fait des essais avec chart pour afficher tout ca de la manière la plus simple du monde mais c'est inexploitable, beaucoup trop lourd de charger des dizaines de milliers de points dans un graphe... et ca ne sert à rien puisque on ne peut pas visualiser des milliers de points...

    Mon idée est donc de manipuler mes données via une base de donnée et de pouvoir exploiter des requêtes pour extraire qu'une partie des données ou des moyennes, mini et maxi sur des plages de temps pour les plus longues périodes.

    Question 1 : Mon approche avec des bases de données est elle bonne ?

    Question 2 : Comment puis je mettre en œuvre une gestion de base de données rapide pour mon appli mono utilisateur sans avoir à déployer un serveur ? (perso je ne connais que Acess comme système de base de donnée)

    Merci de m'avoir lu et merci par avance pour vos explications

    vendredi 1 février 2013 18:17

Réponses

  • Bonjour,

    1) Personnellement pour un tel volume de données je privilégerais en effet une base de données, car mettre en place un mécanisme d'index et de données pour faire des requêtes c'est parfois un peu compliqué. Ce n'est peut-être pas nécessaire de réinventer la roue dans votre cas.

    2) Il existe des bases de données "embedded" (embarquées) telles que Sql Server Compact Edition (SQL CE), ou SqlLite pour des bases SQL (mais il y en a d'autres). Je pense également qu'il faudrait regarder du coté des moteurs de base NoSQL ou de stockage d'objets POCO. Ces moteurs sont simplement des DLLs qui gèrent des fichiers locaux, pas de serveur à mettre en place.

    En revanche je déconseillerais Access vu le volume de données.

    En recherchant "embedded database" dans les packages NuGet on trouve SQL CE, db4o, NDatabase RavenDB, SqlLite, etc.. donc il y a un ensemble de librairies qui peuvent répondre à votre problème.

    En terme d'intégration dans VS je pense que SQL CE reste la meilleure option (forcément). Mais l'implémentation de SqlLite en C# à une très bonne réputation. Après il faut voir si d'autres librairies ne serait pas plus efficaces dans votre contexte. Là je pense qu'il faudrait faire différents tests pour voir ce qui serait le plus probant dans votre cas.

    Cordialement,

    Yan Grenier


    Yan Grenier Mes meilleurs vœux pour 2013.

    • Marqué comme réponse Aurel Bera mardi 5 février 2013 05:43
    samedi 2 février 2013 14:52

Toutes les réponses

  • Bonjour,

    1) Personnellement pour un tel volume de données je privilégerais en effet une base de données, car mettre en place un mécanisme d'index et de données pour faire des requêtes c'est parfois un peu compliqué. Ce n'est peut-être pas nécessaire de réinventer la roue dans votre cas.

    2) Il existe des bases de données "embedded" (embarquées) telles que Sql Server Compact Edition (SQL CE), ou SqlLite pour des bases SQL (mais il y en a d'autres). Je pense également qu'il faudrait regarder du coté des moteurs de base NoSQL ou de stockage d'objets POCO. Ces moteurs sont simplement des DLLs qui gèrent des fichiers locaux, pas de serveur à mettre en place.

    En revanche je déconseillerais Access vu le volume de données.

    En recherchant "embedded database" dans les packages NuGet on trouve SQL CE, db4o, NDatabase RavenDB, SqlLite, etc.. donc il y a un ensemble de librairies qui peuvent répondre à votre problème.

    En terme d'intégration dans VS je pense que SQL CE reste la meilleure option (forcément). Mais l'implémentation de SqlLite en C# à une très bonne réputation. Après il faut voir si d'autres librairies ne serait pas plus efficaces dans votre contexte. Là je pense qu'il faudrait faire différents tests pour voir ce qui serait le plus probant dans votre cas.

    Cordialement,

    Yan Grenier


    Yan Grenier Mes meilleurs vœux pour 2013.

    • Marqué comme réponse Aurel Bera mardi 5 février 2013 05:43
    samedi 2 février 2013 14:52
  • Bonjour,

    Pouvons-nous considérer que vous avez résolu votre problème ?

    Désormais, nous marquons les solutions proposées. N'hésitez pas à revenir et supprimer la réponse marquée si la solution n’est pas correcte. Merci !

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 5 février 2013 05:44