Вопрос

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

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

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

Спасибо.

Это было полезно?

Решение

Пытаться озел, Это сетка данных в памяти, которая распределяет данные среди серверов. Вы можете иметь индексы так же, как вы описали в вашем вопросе и запросите для них.

Использование очень просто. Просто добавьте 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"));

Наконец это работает нормально в облаке. EX: EC2.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top