java - Necesita un sistema de búsqueda de valor-clave distribuido
database bigtable (10)
Dependiendo del caso de uso, Terracotta puede ser justo lo que necesita.
Necesito una forma de realizar búsquedas de valores clave en (potencialmente) cientos de GB de datos. Idealmente, algo basado en una tabla hash distribuida, que funciona muy bien con Java. Debe ser tolerante a fallas y de código abierto.
La tienda debe ser persistente, pero lo ideal sería almacenar en caché los datos en la memoria para acelerar las cosas.
Debería poder admitir lecturas y escrituras concurrentes desde varias máquinas (sin embargo, las lecturas serán 100 veces más comunes). Básicamente, el objetivo es hacer una búsqueda inicial rápida de los metadatos del usuario para un servicio web.
¿Alguien puede recomendar algo?
DNS tiene la capacidad de hacer esto, no sé cuán grande es cada uno de sus registros (8GB de toneladas de datos pequeños), pero puede funcionar.
Las tablas hash distribuidas incluyen Tapiz, Acorde y Pastelería. Uno de estos debe adaptarse a sus necesidades.
OpenChord suena prometedor; pero también consideraría BDB , o cualquier otra tabla hash que no sea SQL, por lo que se distribuirá puede ser dead-easy (si el número de nodos de almacenamiento es (casi) constante, al menos), simplemente hash la clave en el cliente para obtener el servidor apropiado
Probablemente deberías especificar si debe ser persistente o no, en la memoria o no, etc. Podrías probar: http://www.danga.com/memcached/
Open Chord es una implementación del protocolo CHORD en Java. Es un protocolo de tabla hash distribuida que debe ajustarse perfectamente a sus necesidades.
nmdb parece que es exactamente lo que necesitas. Distribuido, en memoria caché, con un almacenamiento persistente en disco. Los back-ends actuales incluyen qdbm, berkeley db y (recientemente agregado después de un correo electrónico rápido al desarrollador) tokyo cabinet . Sin embargo, el tamaño de clave / valor es limitado, pero creo que se puede eliminar si no necesita soporte de TICP.
Es posible que desee ver Hazelcast . Está distribuido / particionado, súper lite, fácil y gratis.
java.util.Map map = Hazelcast.getMap ("mymap");
map.put ("key1", "value1");
Saludos,
-talip
Intente distribuir la estructura del Mapa desde Redisson , basada en el servidor de Redis . Al usar la configuración del clúster Redis, puede dividir datos en 1000 servidores.
Ejemplo de uso:
Redisson redisson = Redisson.create();
ConcurrentMap<String, SomeObject> map = redisson.getMap("anyMap");
map.put("123", new SomeObject());
map.putIfAbsent("323", new SomeObject());
map.remove("123");
...
redisson.shutdown();