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 Perl Discussion :

Structure de données pour gros volume de données


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Structure de données pour gros volume de données
    Bonjour,

    Je travaille sur des gros volumes de données (de plusieurs centaines de Mo à quelques Go) qui doivent obligatoirement être chargée en mémoire (les informations sont interconnectées).
    Actuellement, mon programme utilise des tables de hashage ce qui est catastrophique au niveau de la mémoire (Le programme plante au bout de quelques heures).

    Je souhaiterai donc savoir s'il existe une structure de données plus légères en mémoire pour ce type de problème.
    J'ai vu sur d'autres postes qu'il existait le module PDL mais si j'ai bien compris, il requiert un interpréteur à part. Je souhaiterai continuer à travailler avec l'interpréteur perl.

    Merci
    Dernière modification par Invité ; 31/01/2007 à 14h47.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    PDL ne necessite pas d'interpreteur à part, il faut juste installer le module (on le trouve meme sur certains repository ppm).
    PDL permet de manupuler des matrices (array à plusieurs dimensions), mais elles ne sont pas creuses donc ca peut ne pas repondre à tes besoins.

    Les hash de perl sont plutot gourmande en RAM (environ 60o par element, sans compter la taille de l'element lui meme) mais tu peu essayer d'avoir recours à d'autres types de hash, comme par exemple les ghash http://search.cpan.org/~lbrocard/Tie-GHash/ ou les judy array (mais le binding perl de CPAN est fait de telle sorte que tu ne gagnera pas grand chose en RAM avec, dommage car c'est une super librairie)

    A koi ressembles tes données?

  3. #3
    Membre Expert Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Par défaut
    Quelle est la structure de tes données ?

    Il y a généralement une solution spécifique, donc il faudrait que tu donnes un exemple des données de chaque fichier que tu lis, et que tu précises si chaque fichier s'il est trié ou pas, et s'il y a des fichiers plus petits que d'autres.

    PS: Si jamais tu n'arrives pas à tout stocker en mémoire, je peux te conseiller de passer par une BDD MySQL, si possible sur une machine séparée, que tu rempliras et consulteras à l'aide du module DBI et DBD::MySQL

  4. #4
    Invité
    Invité(e)
    Par défaut
    alors les fichiers décrivent un réseau
    un fichier commence par décrire les objets les plus globaux et se termine par les objets les plus détaillés.
    chaque type d'objet possède un bloc dans le fichier avec son nom et ses caractéristiques.
    mon programme lit toutes ces informations et les insère dans plusieurs hashtables (en fonction du type d'objet) en mettant en clé le nom des objets et/ou certaines propriétés
    une fois chargé en mémoire, je réalise une batterie de test sur les informations contenues en mémoire
    comme tous ces objets peuvent être interconnectés, je dois avoir tout les éléments en mémoire d'où mon soucis.
    Dernière modification par Invité ; 31/01/2007 à 15h07.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ces informations étaient auparavant insérées dans une base MySQL mais le processus était beaucoup trop long. Par contre, la base était sur le même serveur que le script perl.

    Pour quantifier la mémoire utilisée, j'ai installé la libraire Devel::Size. Savez vous si la quantité renvoyée est fiable ?

  6. #6
    Membre Expert Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Par défaut
    Je ne connais pas Devel::Size, donc je ne sais pas si c'est fiable ou pas.

    La vraie question est : "as-tu rééllement besoin de stocker TOUTES les informations en mémoire à un instant T, ou peux tu trouver un critère qui te permet de regrouper les informations, et travailler sur des sous-groupes" ?

    Si tu arrives à classer tes informations en sous-ensembles, tu pourras charger moins de données en mémoire simultanément !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/03/2011, 10h07
  2. Réponses: 1
    Dernier message: 14/05/2010, 14h54
  3. Réponses: 2
    Dernier message: 03/12/2007, 12h48
  4. Réponses: 3
    Dernier message: 11/05/2007, 13h47
  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