Dans mon code Java, je me sers Multimap de Goyave (com.google.common.collect.Multimap) en utilisant ceci:Problème avec Hash carte Espace
Multimap<Integer, Integer> Index = HashMultimap.create()
Ici, la clé Multimap est une partie d'une URL et de la valeur est une autre partie de l'URL (converti en un entier). Maintenant, j'affecte mon espace de tas JVM 2560 Mo (2,5 Go) (en utilisant Xmx et Xms). Cependant, il ne peut stocker que 9 millions de paires d'entiers (clé, valeur) (environ 10 millions). Maintenant, question est, je peux fournir à la JVM seulement une quantité limitée de mémoire (disons 2 Go).
Alors, quelqu'un peut me aider,
1) Y at-il une autre façon ou d'une solution au four à la maison pour résoudre ce problème de mémoire? Moyens, est-ce que Multi-Map disque/DB est une bonne solution? J'ai lu à partir de certains articles Web qu'il existe une solution basée sur DB/Disk pour résoudre ce problème. Berkley DB ou Ehcache. Quelqu'un peut-il m'informer si (ou lequel) est plus rapide?
2) Est-ce que ces disques/bases multi-cartes ont un problème de performance (je demande à la fois de stocker et de chercher)?
3) Toute idée ou information sur la manière d'utiliser ces informations.
4) Toute autre idée sera agréable pour moi. NB: Je souhaite que les solutions multimap (la clé puisse avoir plusieurs valeurs) pour le problème ci-dessus. Et je dois considérer la performance de stockage et de recherche aussi.
Puis-je vous demander pourquoi vous voulez faire cela? Pour ce nombre d'éléments, vous pouvez utiliser une base de données relationnelle simple, avec un index configuré sur votre colonne clé. – Groo
@Groo, j'ai plus de 100 millions de paires de valeurs clés. Et je veux un bon moyen rapide de stocker et de rechercher. – Arpssss
FYI, j'ai suggéré une réponse à votre question originale qui pourrait vous permettre de continuer à utiliser le 'Multimap' de Guava avec des frais généraux réduits. –