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

Java Discussion :

Systèmes de caches en Java


Sujet :

Java

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Points : 172
    Points
    172
    Par défaut Systèmes de caches en Java
    Hello,

    J'ai une application qui doit gérer des objets représentent des cellules dans un espace multi-dimentionnel. Lors du traitement principal, je vais boucler sur des donnés en entrées (plusieurs dizaines de millions), calculer les coordonnées de la cellule à laquelle appartient l'objet, récupérer cette cellule et mettre à jours ses variables d'instances suivant certaines règles.

    Problème: le nombre de cellule en jeux est trop important pour être stocké en mémoire. Il me faut donc un moyen de persistance efficace pour éviter d'exploser la mémoire tout en ne ralentissant pas trop les traitmeents. Je vois deux approches possibles:
    • Un système de cache, comme Ehcache ou JCS de apache
    • Une base de données embarquée type HSQLDB...



    Tout retour d'expérience sur ce genre de problématique sera le bienvenu!
    Merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Sans plus d'info, difficile d'affiner les pistes que tu proposes.
    Selon les traitements à effectuer, la lecture ligne à ligne d'un simple fichier plat pourrait faire l'affaire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Points : 172
    Points
    172
    Par défaut
    Désolé pour le manque de détail!

    Par exemple: pour un objet en input, je calcule les coordonnées de la cellule à laquelle il doit être assignée. Une fois fait, je dois récupérer l'objet Cellule, en utilisant ses coordonnées pour générer un identifiant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int [] cellCoords = getCellCoordsForInput(inputObject);
    Cell cell = cellStore.get(coords2CellIdentifier(cellCoords));
    Donc en gros, il me faut une approche fonctionnant comme une HashMap mais qui permettrait de stocker les objets sur le disque lorsqu'il y en a trop en mémoire.

    Je ne comprends pas ta suggestion du coup ?

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par vinzzzz Voir le message
    Je ne comprends pas ta suggestion du coup ?
    Tu n'avais donné aucune info, j'ai écris ce qui me passait par la tête ;-)
    La base de données me semble à priori le plus adapté. Si la volumétrie est gigantesque, une base NoSQL est très efficace pour une utilisation de type "Hashtable".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    quelqu'un a une bonne librairie de fichier à accès direct?
    (je veux dire sans qu'on soit obliger de se contorsionner pour créer des simili-structs de taille fixe?)
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  6. #6
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    ehcache permet de gerer le stockage sur disque, et non seulement en mémoire http://ehcache.org/documentation/use...torage-options

    Il y a deux fonctionnements, donc un en mode swap, qui pourrait correspondre à ton besoin.

    ehcache fonctionne comme une hashmap (association clé/valeur), donc très simple à mettre en oeuvre. Je l'ai mis en place couplé avec Spring, et cela se concrétisait par la mise en place d'un annotation devant les méthodes devant être mise en cache, et un fichier de conf, donc super simple.

Discussions similaires

  1. [Système] Interfacer PHP avec Java
    Par guipom dans le forum Langage
    Réponses: 2
    Dernier message: 21/03/2006, 18h35
  2. [Smarty] système de cache
    Par mohican13 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 23/02/2006, 09h05
  3. Les Système Multi-agent avec Java
    Par oussam dans le forum Langage
    Réponses: 1
    Dernier message: 09/02/2006, 00h41
  4. [Système] lancer vlc en java
    Par madislak dans le forum API standards et tierces
    Réponses: 13
    Dernier message: 06/01/2006, 10h12
  5. [PEAR] Système de cache jpcache: questions
    Par Cyrius dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/12/2005, 14h38

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