Решения для кэширования и запросов - PullRequest
8 голосов
/ 31 марта 2009

Существуют ли в java решения для кэширования в памяти, которые допускают форму запросов для конкретных атрибутов объектов в Cache?

Я понимаю, что это то, для чего будет использоваться полноценная база данных, но я хочу иметь возможность иметь скорость / производительность кэша с возможностью запроса базы данных.

Ответы [ 7 ]

4 голосов
/ 01 апреля 2009

JBoss Cache имеет функцию поиска. Это называется JBossCacheSearchable. С сайта:

Это пакет интеграции между JBoss Cache и Hibernate Поиск.

Цель состоит в том, чтобы добавить возможности поиска к JBoss Cache. Мы достигаем этого путем используя Hibernate Search для индексации пользователя объекты по мере их добавления в кеш и модифицированный. Кеш запрашивается передача правильного запроса Apache Lucene который затем используется для поиска по индексы и получить соответствие объекты из кеша.

Основная страница JBoss Cache: http://www.jboss.org/jbosscache/

JBossCacheSearch: http://www.jboss.org/community/docs/DOC-10286

3 голосов
/ 18 мая 2013

В настоящее время ответ должен быть обновлен до Infinispan , преемника JBoss Cache и имеющего значительно улучшенную технологию поиска.

3 голосов
/ 04 апреля 2009
2 голосов
/ 31 марта 2009

Сначала на ум пришло HSQLDB , но это реляционная база данных в памяти, а не объектная база данных. Возможно, стоит взглянуть на этот список . Там есть несколько объектных баз данных, одна из которых может удовлетворить ваши потребности.

1 голос
/ 31 марта 2009

Посмотрите db4o на довольно легкую базу данных объектов Java. Вы даже можете запросить данные, используя обычный код Java:

List students = database.query( new Predicate(){
      public boolean match(Student student){
        return student.getAge() < 20
          && student.getGrade().equals(gradeA);}})

(из этой статьи ).

0 голосов
/ 17 июня 2011

Вы можете проверить эту библиотеку:

http://casperdatasets.googlecode.com

это технология набора данных. он поддерживает табличные данные (из базы данных или в виде кода), и затем вы можете создавать запросы и фильтры по набору данных (и сортировать), все в памяти. это быстрый и простой в использовании. НАИБОЛЕЕ ВАЖНО, вы можете выполнять запросы к ЛЮБОМУ столбцу или атрибуту в наборе данных.

0 голосов
/ 03 апреля 2009

Другая идея состоит в том, чтобы использовать Lucene и реализацию Directory RAMDirectory для индексирования того, что вы помещаете в свой кэш. Таким образом, вы можете выполнять запросы, используя все функции поисковых систем, которые предоставляет Lucene.

В вашем случае вы, вероятно, будете индексировать соответствующие свойства ваших объектов «как есть» (без использования Analyzer) и выполнять запросы, используя оператор логического равенства.

Lucene очень легкий, производительный, поточно-ориентированный и потребляет мало памяти.

...