2010-12-03 3 views
-2

Dans notre projet, nous disposons déjà d'un stockage de valeur-clé en mémoire pour les objets, et il est très utilisable, car il nous permet de créer des index et d'interroger le stockage basé dessus. Donc, si nous avons une collection de "Student", et un index composé sur student.group et student.sex, alors nous pouvons trouver tous les étudiants du groupe "ABC". Idem pour la suppression et ainsi de suite.Stockage de valeurs-clés à distance permettant d'indexer?

Maintenant, nous devons adopter notre service pour travailler dans un nuage, afin qu'il y ait plusieurs serveurs, traitant les demandes des utilisateurs, et qu'ils aient un état partagé, stocké dans ce stockage indexé de valeur-clé. Nous avons essayé d'adopter memcashed pour nos besoins, et c'est presque idéal - c'est une solution rapide, simple et éprouvée, mais il n'y a pas d'index, donc nous ne pouvons pas utiliser pour rechercher nos données temporaires.

Existe-t-il un autre moyen d'avoir un cache distant, tout comme le memcashed, mais avec des index?

Merci.

Répondre

4

Essayez hazelcast, Il s'agit d'une grille de données en mémoire qui distribue les données entre les serveurs. Vous pouvez avoir des index comme vous l'avez décrit dans votre question et leur demander.

L'utilisation est très simple. Ajoutez simplement Hazelcast.jar et commencez à coder. Il peut être à la fois intégré et distant.

Voici l'utilisation d'index et requête

add index

IMap<Integer, Student> myDistributedMap = Hazelcast.getMap("students") 
myDistributedMap.addIndex("group", false); 
myDistributedMap.addIndex("sex", false); 

magasin dans IMDG

myDistributedMap.put(student.id, student) 

;

requête

Collection<Student> result = myDistributedMap.values(new SqlPredicate("sex=male AND group=ABC")); 

Enfin, il fonctionne très bien dans le nuage. Ex: EC2

+0

C'est bien, mais est-ce lié à Java? Est-il possible d'utiliser la noisette à partir de quelque chose qui n'est pas basé sur jre? –

+0

Actuellement, Hazelcast prend en charge le client Java, le protocole Memcache et l'interface REST. Avec l'interface REST, vous pouvez atteindre Hazelcast. Mais il n'y a pas encore assez de documents pour REST. –