2010-01-29 12 views
5

Tengo un problema donde necesito ensamblar un mapa cuyo tamaño final está en los GB (pasando más de 64 GB) y no puedo suponer que un usuario del programa tendrá este tipo de máquina de monstruos dando vueltas. Una buena solución sería distribuir este mapa a través de varias máquinas para crear una huella de memoria mucho más modesta por instancia.Fragmentación automática de un mapa de Java en varios nodos

¿Alguien sabe de una biblioteca/conjunto de herramientas que pueden realizar esta fragmentación? No me importa la replicación o las transacciones; simplemente expandiendo este requisito de memoria.

Respuesta

2

sugiero que comience con Hazelcast:

http://www.hazelcast.com/

Es de código abierto, y en mi opinión, es muy fácil para trabajar, por lo que es el mejor marco para la creación rápida de prototipos .

Por lo que yo sé, tiene un rendimiento más rápido que las alternativas comerciales, por lo que tampoco me preocuparía el rendimiento.
(no he referenciado formalmente que yo)

+1

Esa es una afirmación en negrita – Kevin

+0

hey kevin, tienes razón, por eso agregué rápidamente el comentario parentético :) – Yoni

+0

¡Le daré a hazelcast una ovación! – andeyatz

3

terracota podría ser útil echar un vistazo aquí

http://www.terracotta.org/

es una JVM agrupado dependerá de cómo actualizar a menudo el mapa que supongo que en lo bien que funciona.

+0

Si está creando un producto comercial, la licencia de código abierto para Terracotta puede ser un problema principalmente debido a la cláusula de atribución – Kevin

+0

La concesión de licencias no es un problema ya que el proyecto es de código abierto; Terracota parecía un poco OTT y estoy más preocupado por lo bien que Terracotta puede compartir los datos. eHcache parece que podría hacerlo. – andeyatz

2

¿Debe ser de código abierto? Si no, Oracle Coherence puede hacerlo.

+0

De acuerdo, es exactamente (y más) lo que está buscando ... Sin embargo, puede ser un poco excesivo. –

1

Es posible que pueda resolver su problema mediante el uso de una base de datos en su lugar, algo así como http://hsqldb.org/ puede proporcionar la funcionalidad que necesita con la capacidad de escribir los datos en el disco en lugar de mantener todo en la memoria.

Definitivamente daré un paso atrás y me preguntaría si un mapa es la estructura de datos correcta para GBs de datos.

+0

HSQLDB desafortunadamente es muy lento y los datos están muy bien ordenados en pares clave-valor. El problema surge de la necesidad de tener una búsqueda extremadamente rápida sin poder predecir el orden de búsqueda. Es por eso que las soluciones basadas en hash parecen ser mejores que ir por un RDBMS – andeyatz

Cuestiones relacionadas