8

キャッシュ内のオブジェクトの特定の属性に対するクエリの形式を可能にする Java のインメモリ/キャッシュ ソリューションはありますか?

これは本格的なデータベースが使用されるものであることは理解していますが、データベースのクエリ機能を備えたキャッシュの速度/パフォーマンスを実現できるようにしたいと考えています。

4

7 に答える 7

4

JBoss Cache には検索機能があります。これは JBossCacheSearchable と呼ばれます。サイトから:

これは、JBoss Cache と Hibernate Search 間の統合パッケージです。

目標は、JBoss Cache に検索機能を追加することです。これは、Hibernate Search を使用してユーザー オブジェクトがキャッシュに追加され、変更されたときにインデックスを作成することで実現します。キャッシュは、有効な Apache Lucene クエリを渡すことによってクエリされ、インデックスを検索してキャッシュから一致するオブジェクトを取得するために使用されます。

JBoss Cache のメイン ページ: http://www.jboss.org/jbosscache/

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

于 2009-04-01T07:24:31.327 に答える
3

テラコッタまたはGBeansまたはPOJOCache

于 2009-04-04T15:16:09.430 に答える
2

最初はHSQLDBが思い浮かびましたが、これはオブジェクト データベースではなく、インメモリ リレーショナル データベースです。このリストを見てみたいかもしれません。そこにはいくつかのオブジェクト データベースがあり、そのうちの 1 つがニーズを満たすかもしれません。

于 2009-03-31T13:44:26.613 に答える
1

かなり軽量なJavaオブジェクトデータベースでdb4oを見てください。通常のJavaコードを使用してデータをクエリすることもできます。

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

この記事から)。

于 2009-03-31T15:33:38.490 に答える
0

このライブラリをチェックアウトすることをお勧めします:

http://casperdatasets.googlecode.com

これはデータセット技術です。表形式のデータ (データベースから、またはコードで構築されたもの) をサポートし、データセットに対してクエリとフィルターを構築 (および並べ替え) することができます。すべてメモリ内で実行できます。その高速で使いやすい。最も重要なこととして、データセットの任意の列または属性に対してクエリを実行できます。

于 2011-06-17T06:00:36.347 に答える
0

もう 1 つのアイデアは、Lucene と Directory の RAMDirectory 実装を使用して、キャッシュに入れるものにインデックスを付けることです。そうすれば、Lucene が提供するすべての検索エンジン クエリ機能を使用してクエリを実行できます。

あなたの場合、オブジェクトの関連するプロパティをそのまま (Analyzer を使用せずに) インデックス付けし、ブール等値演算子を使用してクエリを実行します。

Lucene は非常に軽量で、パフォーマンスが高く、スレッドセーフであり、メモリ消費量が少ないです。

于 2009-04-03T18:54:30.207 に答える