Удаленное хранилище ключей, позволяющее индексы?
-
30-09-2019 - |
Вопрос
В нашем проекте у нас уже есть встроенный хранилище ключей в памяти для объектов, и оно очень полезно, потому что он позволяет нам делать индексы для него и запрашивать хранилище на основе него. Итак, если у нас есть коллекция «студента», и сложный индекс на студенте. Групп и студенту .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.