5

私は、ユーザーがリレーショナル データベースで結果を検索し、ブラウザで表形式で表示する Java Web アプリケーションを設計するチームの一員です。その後、ユーザーは、たとえばチャート ツールを使用して、同じ結果セット (またはそれらの結果のサブセット) を別のブラウザー ウィンドウで後で表示することもできます。つまり、ユーザーが後で同じ結果セットのレコードを視覚化できるようにする必要があります (最大 24 時間まで)。

システムでの検索はリソースを大量に消費し、常識から外れているため、後でメモリ (RAM またはディスク) から取得できるように、各結果セットをキャッシュするクリーンな方法が必要です。 私たちは、このキャッシングを行うための良いアプローチを探しています。他の人が以前にこれを行っていると信じており、そのようなものをゼロから構築するよりも、ベストプラクティスまたはフレームワークを使用することを好みます. サーバーには十分な RAM がありますが、システムを使用するユーザーが何百人もいる可能性があるため、最初に RAM に保存し、RAM がいっぱいになった場合にハードディスクにキャッシュする方法が必要になる場合があります。

Java オブジェクトとして永続化することが最も理にかなっていると思いますが、より良いアドバイスを受け入れます。データベース チームが後でベンダーを変更することを選択した場合でも、独自のソリューションに固執しないように、ベンダー中立のアプローチが必要です。ありがとう。

4

3 に答える 3

4

あなたが探しているのは Terracotta Ehcache だと思います。これは、あなたが言及したすべてのことを行います。これは無料の製品で、メモリへのキャッシュ、ディスクへのオーバーフロー、最大キャッシュ サイズの指定(MB またはアイテム数)、最終アクセス時間またはエントリ時間に基づく期限切れに使用できます。

于 2012-12-07T19:37:00.060 に答える
1

http://www.jboss.org/infinispan/がまさにそれを行っているのを見たことがあります。メモリ、ディスク、またはデータベースにキャッシュできます。私はそれが好きだとは言いません (構成はそれほど簡単ではなく、ドキュメントがやや不足しています) が、最も確実に機能し、積極的に保守されています。

于 2012-12-07T19:34:43.387 に答える
1

ベンダー ニュートラルであることは、アプリケーションにネイティブな抽象化レイヤーを作成し、このレイヤーの背後で使用したいキャッシュ サービスをプラグインしながら、これらの操作をメイン コードに公開するレイヤーを同じに保つことです。

キャッシュする方法はたくさんあります。さまざまな NoSql ソリューションの使用を検討してください。

ほとんどの場合、オブジェクトをシリアル化し、キャッシュ レイヤーに永続化します。

于 2012-12-07T19:35:39.610 に答える