2009-03-31 3 views
5

Есть ли в памяти/кэширование решения для Java, которые позволяют получить форму запроса для определенных атрибутов объектов в кэше?Кэширование решений и запросов

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

+0

Как то, что вы просите, отличается от простой карты? Вы можете делать рудиментарные запросы на карте, ограничиваясь одним ключом, возвращающим одно значение. –

+0

Чтобы расширить вопрос Павла, ваши запросы простые «поле = значение», или вам нужно больше логики, например «поле> значение» или «поле1 = значение1 И НЕ поле2 = значение2»? – joev

+0

Чем логичнее, тем лучше. (поле> x, y <поле systemoutprintln

ответ

3

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

+0

Да, Infinispan использует поиск Apache lucene и Hibernate для поиска в кешированных объектах. –

2

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

1

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

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

(От this article).

4

Кэш JBoss имеет функцию поиска. Это называется 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

0

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

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

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

3

Terracotta или GBeans или POJOCache

+1

Хорошо, странно. Кто-то отправил мне письмо по электронной почте и сказал мне предоставить эту ссылку для pojocache: http://www.samaxes.com/2009/03/17/jboss-pojocache-configuration/? Я не понимаю, почему они не просто сами сделают этот комментарий. –

0

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

http://casperdatasets.googlecode.com

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

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