2010-12-03 2 views
-2

В нашем проекте у нас уже есть встроенное хранилище ключей для хранения в памяти для объектов, и оно очень полезно, поскольку оно позволяет нам создавать индексы для него и запрашивать хранилище на его основе. Итак, если у нас есть коллекция «Студентов» и составной индекс на student.group и student.sex, то мы можем найти всех студентов-мужчин из группы «ABC». То же самое для удаления и так далее.Удаленное хранилище ключей, позволяющее индексировать?

Теперь мы должны принять наш сервис для работы в облаке, чтобы было несколько серверов, обрабатывающих запросы пользователей, и у них есть общее состояние, хранящееся в этом индексированном хранилище с ключом. Мы пытались принять memcashed для наших нужд, и это почти идеально - это быстрое, простое и проверенное решение, но оно не имеет индексов, поэтому мы не можем использовать поиск временных данных.

Есть ли другой способ иметь удаленный кеш, как memcashed, но с индексами?

спасибо.

ответ

4

Try hazelcast, Это сетка данных в памяти, которая распределяет данные между серверами. У вас могут быть индексы, как вы описали в своем вопросе и запрос для них.

Использование очень простое. Просто добавьте Hazelcast.jar и начните кодирование. Он может быть как встроенным, так и дистанционным.

Здесь индекс и запрос использования

индекс добавить

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

магазин в IMDG

myDistributedMap.put(student.id, student) 

;

запрос

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

Наконец он отлично работает в облаке. Пример: EC2

+0

Это хорошо, но связано ли это с Java? Можно ли использовать орешник из чего-то не на основе jre? – 2010-12-21 09:02:11

Смежные вопросы