Question

Dans notre projet, nous avons déjà intégré dans la mémoire de stockage clé-valeur pour les objets, et il est très utile, car elle nous permet de réaliser des index pour elle et interroger le stockage sur cette base. Donc, si nous avons une collection de « étudiant » s, et un indice composé sur student.group et student.sex, nous pouvons trouver tous les étudiants de sexe masculin du groupe « ABC ». Idem pour la suppression et ainsi de suite.

Maintenant, nous devons adopter notre service pour travailler dans un nuage, de sorte qu'il y aura plusieurs serveurs, le traitement des demandes des utilisateurs, et ils ont un état partagé, stocké dans cette valeur de clé de stockage indexée. Nous avons essayé d'adopter memcashed pour nos besoins, et il est presque idéal - il est rapide, simple et solution éprouvée, mais il ne dispose pas d'index, donc nous ne pouvons pas utilisé pour rechercher nos données temporaires.

Y at-il une autre façon d'avoir une cache à distance, tout comme le memcashed, mais avec des indices?

Merci.

Était-ce utile?

La solution

Essayer Hazelcast , il est un réseau de données en mémoire qui distribue les données entre les serveurs. Vous pouvez avoir des indices comme vous avez décrit dans votre question et demande pour eux.

L'utilisation est très simple. Il suffit d'ajouter Hazelcast.jar et commencer à coder. Il peut être à la fois à distance et encastrés.

Voici l'utilisation d'index et requête

index add

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

magasin dans IMDG

myDistributedMap.put(student.id, student)

query

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

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

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