2010-12-03 8 views
-2

In unserem Projekt haben wir bereits einen eingebetteten In-Memory-Schlüsselwertspeicher für Objekte, und es ist sehr nützlich, weil es uns erlaubt, Indizes dafür zu erstellen und den Speicher darauf abzufragen. Also, wenn wir eine Sammlung von "Studenten" und einen zusammengesetzten Index für student.group und student.sex haben, dann können wir alle männlichen Studenten aus der Gruppe "ABC" finden. Gleiches zum Löschen und so weiter.Remote Key-Value-Speicher erlaubt Indizes?

Jetzt müssen wir unseren Dienst für die Arbeit in einer Cloud übernehmen, so dass es mehrere Server gibt, die Benutzeranfragen verarbeiten, und sie haben einen gemeinsamen Status, der in diesem Schlüsselwert-indizierten Speicher gespeichert ist. Wir haben versucht, memcashed für unsere Bedürfnisse zu übernehmen, und es ist fast ideal - es ist eine schnelle, einfache und bewährte Lösung, aber es hat keine Indizes, so dass wir nicht unsere temporären Daten durchsuchen können.

Gibt es eine andere Möglichkeit, einen Remote-Cache zu haben, genau wie das Memcashed, aber mit Indizes?

Vielen Dank.

Antwort

4

Versuchen Sie hazelcast, Es ist ein In-Memory-Datengrid, das die Daten zwischen den Servern verteilt. Sie können Indizes wie in Ihrer Frage beschrieben haben und nach ihnen suchen.

Die Verwendung ist sehr einfach. Fügen Sie einfach Hazelcast.jar hinzu und starten Sie die Programmierung. Es kann sowohl eingebettet als auch 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); 

store in IMDG

myDistributedMap.put(student.id, student) 

;

Abfrage

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

Schließlich arbeitet sie in der Cloud in Ordnung. Bsp .: EC2

+0

Das ist schön, aber ist es Java gebunden? Ist es möglich, Haselnuss von etwas zu verwenden, das nicht auf JRE basiert? –

+0

Gegenwärtig unterstützt Hazelcast Java Client, Memcache Protokoll und REST Interface. Mit der REST-Schnittstelle können Sie Hazelcast erreichen. Aber es gibt noch nicht genug Dokumente für REST. –