キャッシュ内のオブジェクトの特定の属性に対するクエリの形式を可能にする Java のインメモリ/キャッシュ ソリューションはありますか?
これは本格的なデータベースが使用されるものであることは理解していますが、データベースのクエリ機能を備えたキャッシュの速度/パフォーマンスを実現できるようにしたいと考えています。
キャッシュ内のオブジェクトの特定の属性に対するクエリの形式を可能にする Java のインメモリ/キャッシュ ソリューションはありますか?
これは本格的なデータベースが使用されるものであることは理解していますが、データベースのクエリ機能を備えたキャッシュの速度/パフォーマンスを実現できるようにしたいと考えています。
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
このライブラリをチェックアウトすることをお勧めします:
http://casperdatasets.googlecode.com
これはデータセット技術です。表形式のデータ (データベースから、またはコードで構築されたもの) をサポートし、データセットに対してクエリとフィルターを構築 (および並べ替え) することができます。すべてメモリ内で実行できます。その高速で使いやすい。最も重要なこととして、データセットの任意の列または属性に対してクエリを実行できます。
もう 1 つのアイデアは、Lucene と Directory の RAMDirectory 実装を使用して、キャッシュに入れるものにインデックスを付けることです。そうすれば、Lucene が提供するすべての検索エンジン クエリ機能を使用してクエリを実行できます。
あなたの場合、オブジェクトの関連するプロパティをそのまま (Analyzer を使用せずに) インデックス付けし、ブール等値演算子を使用してクエリを実行します。
Lucene は非常に軽量で、パフォーマンスが高く、スレッドセーフであり、メモリ消費量が少ないです。