Frage

In unserem Projekt haben wir bereits einen integrierten In-Memory-Schlüssel-Wert-Speicher für Objekte, und es ist sehr brauchbar, weil es uns erlaubt Indizes für sie zu machen und abfragen, um die Speicherung eines darauf basierenden. Wenn wir also eine Sammlung von „Student“ s haben, und eine Verbindung Index auf student.group und student.sex, dann können wir alle männlichen Studenten aus der Gruppe „ABC“ finden. Das Gleiche gilt für das Löschen und so weiter.

Jetzt müssen wir unseren Service übernehmen in einer Wolke arbeiten, so dass es mehrere Server sein, Benutzeranfragen verarbeiten, und sie haben einen gemeinsamen Staat, in diesem Schlüsselwert indiziert Speicher gespeichert. Wir haben versucht, für unsere Bedürfnisse zu verabschieden memcashed, und es ist fast ideal - es ist einfach, schnell und bewährte Lösung, aber es Indizes nicht hat, so dass wir nicht unsere temporären Daten verwendet werden, können zu suchen.

Gibt es eine andere Möglichkeit, eine Remote-Cache haben, so wie die memcashed, aber mit Indizes?

Danke.

War es hilfreich?

Lösung

Versuchen Sie Hazelcast, Es ist ein In-Memory-Datenraster, das die Daten zwischen den Servern verteilt. Sie können Indizes haben wie Sie sie in Ihrer Frage und Abfrage beschrieben.

Die Benutzung ist sehr einfach. Fügen Sie einfach Hazelcast.jar und Programmieren beginnen. Es kann sowohl eingebettet und entfernt sein.

Hier ist der Index und Abfrage Verwendung

Add-Index

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

Speicher in IMDG

myDistributedMap.put(student.id, student)

;

query

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

Schließlich funktioniert es gut in der Cloud. Ex: EC2

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top