IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Ecriture fichier stockage gros volume


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    valves hydrauliques
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : valves hydrauliques
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Par défaut Ecriture fichier stockage gros volume
    Bonjour,

    je develope sous VB.net en version 2010

    Je dois faire une application pour laquelle je dois tout les 30ms stocker 1000 nombres que je reçoit en codage brut sur 32bit.

    Je connais que le stockage en fichier texte avec un system.io.streamwriter, mais c'est surement absolument inadapté, en espace disque, etc.

    Quel est la demarche a suivre, pour stocker des données en format brut dans un fichier ?

    Merci de votre aide

    armin

  2. #2
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    tu peux voire ici

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    1000 nombres integer = 1000*4octets = environ 4ko
    et toutes les 30ms ca fait environ 33 fois par seconde, donc au final moins de 150ko/s

    après juste le nombre seul ca me parrait étonnant, en général on colle une date et un identifiant pour savoir ce que représente le nombre (à voir donc dans ton cas)
    et combien de temps doit tu veux stocker ?

    après faut il relire les données ?

    parce que tout mettre bout à bout dans un fichier texte c'est faisable, mais ce n'est pas forcément ce qu'il y a de plus pratique si tu as une date ou autre (c'est surement ce qu'il y a de plus rapide sinon)

    après il y a la base de données, et là si tu as une date c'est ce qui sera le plus pratique et le plus rapide en lecture sur une période donnée
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    Bonjour,
    Je suis pas sûr de faire avancer les choses, mais il ne me coute rien d'essayer :
    Tu souhaites garder en tampon tes données pour permettre à l'automate de continuer à bosser sans avoir à attendre l'enregistrement des données, tu veux passer par un fichier qui récupère toutes les données d'un traitement complet. Je pense que le fichier texte n'est pas le plus adapté, d'un point de vue vitesse comme sécurité. J'aurais simplement gardé dans des variables assez globale l'ensemble des informations, et avant la fin du programme, lancé une procédure qui inscrit tout ce qui a été récupéré dans ta BDD.

  5. #5
    Membre confirmé
    Homme Profil pro
    valves hydrauliques
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : valves hydrauliques
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Par défaut Merci de ton aide
    Bonjour,

    Pour etre plus claire, les 1000 valeurs sont des valeurs des grandeurs d'un systeme (une machine de 400 MegaWatt de stockage d'energie par pompage), et pendant la mise en service on enregistre tout, pour que en cas d'incidence on peut analyser la defaillance.
    Et les environ 1000 valeurs ont été jugé necessaire.
    Tu me dit en vitesse le fichier texte n'est pas le meilleur, qoui pendre alors ?
    Je connais bien la base de données, mais en vitesse d'écriture c'est forcement plus lent, donc bien prevu d'integrer ça plus tard dans une base, du genre avec un BULK INSERT dans SQLserveur.

    Mais je ne connais pas une methode, pour ecrire des données brut la plus rapidement possible dans un fichier ?
    En charge CPU le fichier texte est deja bien, mais ça me parrait un peu barbare comme traitement.

    Armin

  6. #6
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    Tu ne sembles pas pouvoir garder ça sous forme de variable jusqu'à la fin du traitement, pour garder la traçabilité en cas d'arrêt impromptu si j'ai bien compris.
    Ca va sans doute un peu trop loin pour mes connaissances, en dehors du fichier texte, il y a le fichier binaire, après je peux pas trop dire lequel est le mieux. J'ai déjà rencontré des applications lourdes qui avait une console qui laissait déroulé un certain nombre de paramètre, et en cas d'arrêt non prévu, le contenu de cette console était copié sur un fichier texte à la racine de l'application, donc passer par un fichier texte n'est pas si barbare que ça.

  7. #7
    Membre confirmé
    Homme Profil pro
    valves hydrauliques
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : valves hydrauliques
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Par défaut
    bonjour,

    tu peux voire ici :

    merci,

    ma question est : dans le soucie d'etre compact, je veux stocker les données brut.

    Je peux prendre ASCII comme format, et ecrire par example 124 en definissant : Dim a As Char // a = Chr(124) ?
    On peut aligner des nombres de la sorte en faissant des Write, sans jamais faire des Writeline ?
    Il n'y a pas un mode d'ecrire directement les nombres, sans passer par le Chr(xxx) ?


    il s'agit de la surveillance d'un automate qui a environ 1000 variables a gerer.

    Bien sur il y a une variable qui est le temps, ça sera transferé dans une base de données, mais la vitesse d'ecriture pour ecrire en continue dans la base est trop limite (j'ai trouvé en fonction des PC testées entre 15 et 30ms pour ecrire 1000 valeurs dans une table dans Access, et SQL serveur était encore beaucoup plus lent a cause de la gestion du journal de transactions je pense), d'ou l'idee d'ecrire en continue dans un fichier texte, puis de relire dans une base de données après pour le traitement.

    Donc mon soucie premier est, comment ecrire ce gros volume de données avec la charge la plus faible possible pour le pc,et en minimisant le volume.
    Car il s'agit de faire des mesures sur plusieurs journées, et d'examiner en cas de problèmes les données.

    merci

    Armin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécution d'un gros volume de requêtes stockées dans un fichier
    Par tomarineo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/03/2015, 11h17
  2. Réponses: 6
    Dernier message: 17/02/2010, 21h32
  3. Ecriture et stockage de données sur un fichier .txt
    Par Olivier.D dans le forum Fortran
    Réponses: 3
    Dernier message: 23/03/2009, 14h05
  4. Comparaison de fichiers très gros volume
    Par tanys dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 27/06/2006, 23h58
  5. Lecture et ecriture fichier .ini
    Par despe dans le forum C
    Réponses: 6
    Dernier message: 23/07/2003, 20h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo