0

Glassfish でメッセージ駆動型 Bean を実行しています。毎秒数百のメッセージを受信します。メッセージを受信した後、JDBC データベースの値を読み取って処理する必要があります。

ただし、データベースの値は 1 日に 1 回以下しか更新されません。そのため、ほとんどの場合、MDB が読み取る内容は一貫しています。では、パフォーマンスを向上させるためにコンテンツをメモリにキャッシュする良い方法はありますか?

更新: MDB 用に Glassfish でメモリ内データベース JDBC 接続プールを構成することは可能ですか?

4

3 に答える 3

1

サードパーティのソリューション ( memcachedなど) を使用するのはやり過ぎだと思われる場合は、 ID マップ パターンに触発されて、(独自の有効期限ポリシーを使用して) 独自のキャッシュ メカニズムを実装することができます。

于 2012-05-31T04:25:21.990 に答える
0

シンプルなSoftReference HashMap ベースのキャッシュを使用できます。完全な実装例を次に示しますSoftReference Cacheさらに、完全なマップを定期的にクリアして、新しいデータを取り込むことができます。
または、サードパーティのライブラリを使用できる場合は、Apache コレクションの一部として提供されるReferenceMapを使用できます。

于 2012-05-31T13:21:39.550 に答える
0

最も明白な答えは、テーブルを MEMORY テーブル タイプとして定義することです。基盤となるハードウェアがクラッシュする傾向がなく、OS が安定しており、UPS が接続されている場合は、これについて検討することをお勧めします。また、これが失敗するたびに、最後のバックアップ以降の多数のトランザクションが失われた結果にも依存します。しかし、パフォーマンスに関しては、これは非常に高速です。MySQL の詳細については、こちらを参照してください。(YMMV)

そのように複数のテーブルを実装しましたが、うまくいきました。

于 2012-05-31T06:57:19.337 に答える