rengzehn a écrit :
Je suis surpris par le "trop de ram consommée". Je vois pas trop comment un systeme de fichier avec des noms de fichiers et des données peut remplir ta RAM ?? Il y a tant de fichiers que ça ?? quelle taille atteint ton fichier ? je trouve ça étrange.
|
La taille du fichier XML n'est pas très grande (5-10Mo pour environ 30 000 fichiers), par contre la ram utilisé après parsing de ce fichier est (très) grande, environs 300-500Mo. De même lorsque j'utilise des objets java, mais ça c'est peut-être à cause des HashMap (utilisé pour enregistrer tout les objets (fichiers/dossiers) enfants d'un dossier et y accéder par son nom)
LeRiton a écrit :
Je comprend pas ton volume de données. Si tu gères de la synchro / réplication, pour une arborescence donnée, tu ne stockes qu'une seule fois "vers qui il est synchronisé, son path" et tu déduit le reste de ton arborescence de base. T'as plus de détails sur tes metas ?
|
Oui j'ai plus de détail sur les méta, car dans mon api, un fichier peut être synchronisé vers plusieurs endroit, j'ai donc n paths de destinations. J'ai aussi la taille du fichier, sa date de dernière modif, et encore quelques autres méta. C'est pas vraiment un système de synchro "standard"
LeRiton a écrit :
Sinon, parsing XML plus rapide et léger en RAM (mais plus de code) => SAX / StAX / Woodstox
Si tu pars sur une BDD locale, SQLite devrait suffire.
|
J'avais déja jeté un coup d'oeil à Woodstox, effectivement il faut écrire pas mal de code à coté, alors je pense partir sur une base de donnée. D’ailleurs ne serai-ce pas plus judicieux d'utiliser H2 (http://www.h2database.com/html/main.html) étant donnée qu'elle est écrite entièrement en java ? Coté perf elle à l'air pas mal