Question

J'ai besoin d'un moyen d'effectuer des recherches sur les valeurs clés à travers (potentiellement) des centaines de Go de données. Idéalement, quelque chose basé sur une table de hachage distribuée, qui fonctionne bien avec Java. Il devrait être tolérant aux pannes et open source.

Le magasin devrait être persistant, mais devrait idéalement mettre en cache les données en mémoire pour accélérer les choses.

Il devrait pouvoir prendre en charge les lectures et les écritures simultanées à partir de plusieurs machines (les lectures seront 100 fois plus courantes cependant). Il s’agit essentiellement de faire une première recherche rapide des métadonnées de l’utilisateur pour un service Web.

Quelqu'un peut-il recommander quelque chose?

Était-ce utile?

La solution

Vous pouvez vouloir vérifier Hazelcast . Il est distribué / partitionné, super léger, facile et gratuit.

java.util.Map map = Hazelcast.getMap ("mymap");
map.put ("key1", "value1");

Cordialement,

-talip

Autres conseils

Open Chord est une implémentation de Protocole CHORD en Java. C'est un protocole de table de hachage distribué qui devrait répondre parfaitement à vos besoins.

Selon le cas d'utilisation, Terracotta est peut-être ce dont vous avez besoin.

Vous devriez probablement préciser s'il doit être persistant ou non, en mémoire ou non, etc. Vous pouvez essayer: http://www.danga.com/memcached/

Les tables de hachage distribuées incluent Tapestry, Chord et Pastry. L’un d’eux devrait correspondre à vos besoins.

OpenChord semble prometteur; mais j’aimerais aussi considérer BDB , ou tout autre élément -Le hashtable SQL, le rendant distribué peut être extrêmement simple (si le nombre de nœuds de stockage est (presque) constant, au moins), il suffit de hacher la clé sur le client pour obtenir le serveur approprié.

nmdb sonne exactement ce dont vous avez besoin. Distribué, dans la mémoire cache, avec un stockage persistant sur disque. Les back-end actuels incluent qdbm, berkeley db et (récemment ajoutés après un bref courriel au développeur) tokyo cabinet . La taille clé / valeur est limitée, mais je pense que cela peut être levé si vous n'avez pas besoin du support de TICP.

Essayez la structure de carte distribuée à partir de Redisson , basée sur Redis serveur. En utilisant la configuration du cluster Redis, vous pouvez fractionner les données sur 1 000 serveurs.

Exemple d'utilisation:

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();

DNS a la capacité de le faire, je ne sais pas quelle est la taille de chacun de vos enregistrements (8 Go de tonnes de petites données?), mais cela peut fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top