In meinem Java-Code, ich bin mit Guava der Multimap (com.google.common.collect.Multimap) durch diese mit:Ausgabe mit Hash Karte Raum
Multimap<Integer, Integer> Index = HashMultimap.create()
Hier ist Multimap Schlüssel ein Teil einer URL und Wert ein anderer Teil der URL ist (umgewandelt in eine Ganzzahl). Jetzt weise ich meinen JVM 2560 Mb (2.5 GB) Heapspeicher zu (mit Xmx und Xms). Es kann jedoch nur 9 Millionen solcher (Schlüssel, Wert) Paare von ganzen Zahlen (ca. 10 Millionen) speichern. Nun, Problem ist, ich kann JVM nur eine begrenzte Menge an Speicher zur Verfügung stellen (sagen wir 2 GB).
Also, kann mir jemand helfen,
1) Gibt es eine andere Art und Weise oder hausgebackenem Lösung dieses Speicherproblem zu lösen? Bedeutet, ist Disk/DB Based Multi-Map eine nette Lösung? Ich lese aus einigen Web-Artikeln, dass es eine DB/Disk-basierte Lösung gibt, um dieses Problem zu lösen. Berkley DB oder Ehcache. Kann mir jemand mitteilen, ob (oder welcher) schneller ist?
2) Ist diese Disk/DB Based Multi-Map Leistungsproblem (Ich frage nach Speichern und Suchen)?
3) Irgendeine Idee oder Information wie man diese in Kürze benutzt.
4) Jede andere Idee wird nett für mich sein.
Hinweis: Ich möchte Multimap (Schlüssel können mehrere Werte haben) Lösungen für das oben genannte Problem. Und ich muss die Leistung des Lagerns und Suchens auch berücksichtigen.
Darf ich fragen, warum Sie das tun möchten? Für diese vielen Elemente können Sie eine einfache relationale Datenbank mit einem Index verwenden, der für Ihre Schlüsselspalte konfiguriert ist. – Groo
@Groo, ich habe mehr als 100 Millionen Schlüsselwertpaare. Und ich möchte einen schönen schnellen Weg zum Speichern und Suchen. – Arpssss
FYI, ich schlug eine Antwort auf Ihre ursprüngliche Frage vor, mit der Sie Guavas "Multimap" mit reduziertem Platzaufwand weiter verwenden können. –