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

Langage C++ Discussion :

Gestion de gros volumes de données


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 134
    Par défaut Gestion de gros volumes de données
    Bonjour,

    je suis actuellement en train d'écrire un programme qui fait un calcul sur diverses configurations. L'objectif est de pouvoir faire un milliard de configurations en quelques jours. Pour chacune des configurations, j'aimerais enregistrer quelques paramètres d'entrée, des résultats intermédiaires et les résultats finaux (disons l'équivalent de 20 variables de type double). Les calculs étant déjà lourds, il faudrait que le temps d'écriture ne prenne pas trop de temps.

    Une fois les calculs terminés, j'aimerais avoir la possibilité de visualiser n'importe quelle configuration pour vérifier que tout s'est bien passé mais aussi analyser les données : les présenter sous forme de carte, sous forme de graphiques... Donc parser les données de manières très variées et ceci pratiquement en temps réel (ie réponse en une dizaine de secondes).

    Un calcul rapide me fait penser que je serai dans un ordre de grandeur de quelques dizaines voir centaines de Go.

    J'aimerais donc savoir comment pouvoir gérer cela. Voici mes idées, mais j'imagine qu'il existe des techniques plus efficaces :
    * stocker chaque paramètre dans un fichier binaire :
    - avantage = je peux aller chercher une info assez rapidement avec un seekg()
    - inconvénient = plusieurs fichiers ouverts en parallèle => est-ce que ce ne sera pas limitant au moment d'écrire sur le disque
    - question : un thread dédié à l'écriture, ça a un sens ?
    * stocker tout ça en XML
    - avantage : tout dans le même fichier et simple à lire pour l'utilisateur
    - inconvénient : XML verbeaux et même en SAX, ça risque d'être long à parser ?
    * j'ai lu qu'il existait des formats XML compressés comme du EXI ?
    * base de donées : efficace avec un tel volume de données ?

    Auriez-vous des conseils à me donner ? Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 503
    Par défaut
    >Auriez-vous des conseils à me donner ?
    Ne pas réinventer la roue. Des solutions "Big Data", il y en a des dizaines, dont un bon nombre en Open Source.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 134
    Par défaut
    Bonjour bacelar et merci pour cette première réponse.

    En cherchant sur Google, j'ai trouvé STXXL. Est-ce de cela dont tu parles ? Est-ce que tu aurais un ou 2 noms de solutions open source car je n'en trouve pas beaucoup, je ne dois pas utiliser les bons mots clés. Avec quelques noms de solutions, je pourrai plus facilement cibler des solutions adaptées.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 503
    Par défaut
    Des solutions open source, il y a pléthore :
    http://www.datamation.com/data-cente...ig-data-3.html
    Il faut caractériser votre problème.
    L'avantage des solutions Big Data, c'est qu'elles occupent des aspects parallélisassion, résistance aux pannes, de la distribution sur des fermes de serveurs, de la mise en forme pour de l'addichage BI ...

    La solution STXXL semble être juste pour faire tous les calculs et autres mise en forme dans un seul noeud.
    Vous aurez des problèmes de mise à l'échelle avec la croissance de la taille des données.

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 134
    Par défaut
    Merci encore bacelar,

    je suis en train de lire ce que propose le lien (et de découvrir car je n'avais jamais été confronté à ce genre de problématique). Pour caractériser un peu mieux le problème en attendant, je dirais que ça ressemble à ceci :

    Une interface graphique (Qt/C++) avec 2 onglets :
    * un onglet qui contient un bouton calcul, utilisé lorsque toutes les configurations sont mises en place. Il lance un code de ce type (pseudo code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(unsigned long int i=0; i<nb_tirage; i++) { // nb_tirage pouvant aller jusqu'à 1 milliard
        double inputs[], outputs[];
        inputs[x] = generate_random_laws(); // Génère aléatoirement une série de valeurs
        outputs[x] = compute_scenario(inputs[]); // Génère une série de résultats
        store(i, inputs[], outputs[]); // Un stockage au fil de l'eau
    }
    => Le calcul est très complexe et prend plusieurs jours. Il faudrait donc que le 'store' ne prenne pas trop de temps pour ne pas rallonger l'ensemble. Disons que si ça prend quelques heures par rapport à quelques jours, c'est un bon ordre de grandeur
    * un onglet analyse qui permet par exemple
    - aller chercher toutes les valeurs d'un type entre i=X et i=Y pour l'afficher sous forme de courbe
    - aller chercher toutes les valeurs de 2 ou 3 types pour en faire un plot 2D ou 3D
    - aller chercher toute les valeurs d'un type pour en faire une statistique.
    => L'objectif serait d'avoir quelque chose de réactif (ie que ça réponde en une dizaine de secondes). C'est la contrainte prioritaire.

    Tout cela sur un PC puissant (8 à 16 coeurs en général) et en local (sur disque dur de la machine).

    Je ne sais pas si c'est assez complet pour aiguiller le choix. Et si cela est faisable, bien sûr.

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Si ca reste en local, alors une base de données devrait suffire.

    Normalement, les solutions big data sont pensée pour des systèmes comme l'indexation des pages web.
    Des quantités de données énormes. Vraiment énormes.
    Qui requiert des dizaines de serveurs pour le stockage, et d'autres encore pour le calcul.

    Dans ton cas, vu que tu restes dans le cadre d'un seul poste, ce n'est pas vraiment adapté.

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

Discussions similaires

  1. Gestion des gros volumes
    Par brunon dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/09/2007, 10h02
  2. Réponses: 3
    Dernier message: 11/05/2007, 13h47
  3. [Recherche texte sur gros volume de données]
    Par tesla dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 21/02/2007, 13h43
  4. Structure de données pour gros volume de données
    Par Invité dans le forum Langage
    Réponses: 9
    Dernier message: 01/02/2007, 11h58
  5. Gérer le gros volume de données
    Par berceker united dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 21/07/2006, 19h29

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