2009-03-31 14 views
5

¿Existen soluciones en memoria/almacenamiento en caché para java que permitan una forma de consultar atributos específicos de objetos en el caché?Soluciones de almacenamiento en caché y consultas

Me doy cuenta de que esto es algo para lo que se utilizaría una base de datos completa, pero quiero poder tener la velocidad/rendimiento de un caché con la capacidad de consultar de una base de datos.

+0

¿Cómo difiere lo que está pidiendo de un simple Mapa? Puede hacer consultas rudimentarias en un Mapa, restringidas a una clave que devuelve un valor. –

+0

Para ampliar la pregunta de Paul, ¿sus consultas son simples consultas 'campo = valor', o necesita más lógica, como 'campo> valor' o 'campo1 = valor1 Y NO campo2 = valor2'? – joev

+0

Cuanto más lógica, mejor. (campo> x, y systemoutprintln

Respuesta

3

En la actualidad, la respuesta debe actualizarse al Infinispan, el sucesor de JBoss Cache y con una tecnología de búsqueda muy mejorada.

+0

Sí, Infinispan utiliza Apache lucene e Hibernate para realizar búsquedas en objetos en caché. –

2

Al principio, me vino a la mente HSQLDB, pero esa es una base de datos relacional en memoria en lugar de una base de datos de objetos. Puede que desee mirar this list. Hay algunas bases de datos de objetos allí, una de las cuales puede satisfacer sus necesidades.

1

Mire db4o en la base de datos de objetos java bastante liviana. Incluso puede consultar los datos utilizando el código de Java normal:

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

(De this article).

4

JBoss Cache tiene funcionalidad de búsqueda. Se llama JBossCacheSearchable. Desde el sitio:

Este es el paquete de integración entre JBoss Cache y Hibernate búsqueda.

El objetivo es agregar capacidades de búsqueda a JBoss Cache. Logramos esto por usando Hibernate Search para indexar los objetos del usuario ya que se agregan al caché y se modifican. El caché es consultado por pasando una consulta válida de Apache Lucene que luego se utiliza para buscar a través de los índices y recuperar los objetos coincidentes de la memoria caché.

página principal JBoss Cache: http://www.jboss.org/jbosscache/

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

0

Otra idea es utilizar Lucene y una aplicación RAMDirectory del Directorio para indexar lo que pone en su caché. De esta forma, puede consultar utilizando todas las funciones de consulta del motor de búsqueda que proporciona Lucene.

En su caso, probablemente indexará las propiedades relevantes de sus objetos tal como están (sin usar un Analizador) y consultará utilizando un operador de igualdad booleana.

Lucene es muy liviano, de alto rendimiento, es seguro para subprocesos y el consumo de memoria es bajo.

3
+1

Ok, extraño. Alguien me envió un correo electrónico y me dijo que proporcionara este enlace para pojocache: http://www.samaxes.com/2009/03/17/jboss-pojocache-configuration/? No veo por qué no harían ese comentario aquí ellos mismos. –

0

Es posible que desee echa un vistazo a esta biblioteca:

http://casperdatasets.googlecode.com

Ésta es una tecnología conjunto de datos. admite datos tabulares (ya sea desde una base de datos o construidos en código), y luego puede construir consultas y filtros contra el conjunto de datos (y ordenar), todo en la memoria. es rápido y fácil de usar. MÁS IMPORTANTE, puede realizar consultas contra CUALQUIER columna o atributo en el conjunto de datos.

Cuestiones relacionadas