Frage Caching-Lösungen und Abfragen


Gibt es In-Memory / Caching-Lösungen für Java, die eine Abfrage für bestimmte Attribute von Objekten im Cache ermöglichen?

Ich weiß, dies ist etwas, für das eine vollständige Datenbank verwendet wird, aber ich möchte in der Lage sein, die Geschwindigkeit / Leistung eines Caches mit der Abfragefähigkeit einer Datenbank zu haben.


5
2018-03-31 13:32


Ursprung


Antworten:


Heutzutage sollte die Antwort aktualisiert werden auf Infinispan, der Nachfolger von JBoss Cache und mit stark verbesserter Suchtechnologie.


3
2018-05-18 19:49



JBoss Cache bietet Suchfunktionen. Es heißt JBossCacheSearchable. Von der Website:

Dies ist das Integrationspaket   zwischen JBoss Cache und Hibernate   Suche.

Ziel ist es, Suchfunktionen hinzuzufügen   JBoss-Cache. Das erreichen wir durch   Verwenden der Hibernate-Suche zum Indizieren des Benutzers   Objekte, wie sie dem Cache hinzugefügt werden   und modifiziert. Der Cache wird abgefragt von   Übergeben einer gültigen Apache Lucene-Abfrage   mit dem dann gesucht wird   die Indizes und abrufen übereinstimmend   Objekte aus dem Cache.

Haupt-JBoss-Cache-Seite: http://www.jboss.org/jbosscache/

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


4
2018-04-01 07:24



Terrakotta oder GBeans oder POJOCache


3
2018-04-04 15:16



Zu Beginn, HSQLDB kam mir in den Sinn, aber das ist eine relationale In-Memory-Datenbank statt einer Objektdatenbank. Könnte sehen wollen diese Liste. Es gibt einige Objektdatenbanken, von denen eine Ihren Bedürfnissen entspricht.


2
2018-03-31 13:44



Ansehen db4oin ziemlich leichter Java-Objektdatenbank. Sie können die Daten sogar mit normalem Java-Code abfragen:

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

(Von Dieser Artikel).


1
2018-03-31 15:33



Eine andere Idee ist, Lucene und eine RAMDirectory-Implementierung von Directory zu verwenden, um zu indizieren, was Sie in Ihren Cache legen. Auf diese Weise können Sie alle Suchanfragenfunktionen von Lucene abfragen.

In Ihrem Fall werden Sie wahrscheinlich die relevanten Eigenschaften Ihrer Objekte so wie sie sind indexieren (ohne einen Analyzer zu verwenden) und mit einem booleschen Gleichheitsoperator abfragen.

Lucene ist sehr leicht, performant, Thread-sicher und der Speicherverbrauch ist gering.


0
2018-04-03 18:54



Vielleicht möchten Sie diese Bibliothek auschecken:

http://casperdatasets.googlecode.com

Dies ist eine Dataset-Technologie. Es unterstützt Tabellendaten (entweder aus einer Datenbank oder in Code erstellt), und Sie können Abfragen und Filter für das Dataset (und die Sortierung) erstellen, alles im Arbeitsspeicher. es ist schnell und einfach zu bedienen. Vor allem können Sie Abfragen für jede Spalte oder Attribut in der Datenmenge durchführen.


0
2018-06-17 06:00