2012-03-30 7 views
2

Ich muss mehr als 100 Millionen Schlüsselwerte in meiner HashMultiMap speichern (Schlüssel kann mehrere Werte haben). Kann jemand mir helfen, welche sowohl für die Speicherung und Suche schneller ist:Problem mit Hash Map Space und Performance

1) Berkeley DB

2) Tokyo Cabinet

3) H2

4) EhCache

5) Oder anyothers

Ein weiterer Punkt, ist die Leistung von denen etwa ich zahnmedizinisch zu In-Memory-Hash-Karte? Ein wenig Anleitung wird hilfreicher sein. Vielen Dank.

Hinweis: Informationen zu einem dieser Punkte sind ebenfalls hilfreich.

+0

Welche Größe haben Ihre Schlüssel/Werte? Welche Struktur haben sie? –

+0

@ JeffFoster, Schlüssel/Werte sind int. – Arpssss

+0

@ JeffFoster, genauer gesagt http://StackOverflow.com/Questions/9930347/Multimap-Space-issue-Guava – Arpssss

Antwort

3

Ich würde empfehlen Redis. Es ist eher ein Datenstrukturspeicher als die anderen (z. B. unterstützt es Karten und Sets) und erfordert sehr wenig Aufwand, um damit anzufangen. Es ist unglaublich einfach zu bedienen und hat eine große Java API.

Ich würde mit Blick auf die Funktionen here, mit denen Sie einen Schlüssel mit einer Gruppe von Werten verknüpfen können.

+0

Vielen Dank. Aus Ihrer Erfahrung, ist die Leistung von Redis ungefähr identisch mit In-Memory-Hash-Karte? – Arpssss

+0

Es hängt von Ihren Umständen ab. Ich hatte nie ein Problem mit der Leistung in Redis. Der beste Rat wäre, einen Prototyp zu hacken und einfach zu sehen, was passiert. Siehe auch http://redis.io/topics/benchmarks –

2

Ich würde leveldb betrachten, weil es behauptet, faster than Kyoto Cabinet zu sein. Andere interessante Bibliotheken sind Kyoto Cabinet und JDBM3.

Dies sind Low-Level-Bibliotheken (ohne Unterstützung für relationale Abfragen oder SQL). Einige bieten Transaktionsunterstützung, aber ich bin mir nicht sicher, ob Sie sie brauchen. In-Memory-Hash-Maps sind jedoch schneller.