0

私はオープン ソース スタックが初めてで、hibernate/jpa/jdbc と memcache で遊んでいます。私はjdbcクエリごとに大きなデータセットを持っており、最終的にチャートにバインドするこれらの大きなデータセットが多数ある可能性があります。

ただし、ページの読み込みごとにデータベースをヒットして Web ページのグラフに表示するのではなく、パフォーマンスに重点を置いています。

どのように (memcache、redis、ローカルまたは分散)、このデータ (jSON または生の結果データ) をどこにキャッシュしてメモリにロードするかの例はありますか? また、時間ベースのエビクション マーキング アルゴリズムでない限り、キャッシュを更新する方法を理解する必要があります (つまり、30 分が経過すると、キャッシュを使用する代わりにデータベース クエリから新しいデータを取得するか、xhrs/min/等)。?

ありがとう!

4

2 に答える 2

1

これは典型的な問題であり、解決策は簡単ではありません。デザインを決定する要因はたくさんあります。これは私たちが以前に行ったことです

  • データを抽出するためのクエリは少し複雑で(実行に約 1 分かかりました)、データセットが大きいため、1 時間ごとにデータベースからデータをプルして memcached にプッシュしていたバッチから memcache にデータを取り込みました。有効期限キャッシュをバッチ間隔より大きく保つことで、キャッシュ内のデータが常にどこにあるかを確認しました。
  • 動的キャッシングの別の使用例がありました。この場合、データのリクエストを受信すると、最初に memcached をチェックし、データが見つからない場合はデータベースにクエリを実行し、データをフェッチして memcached にプッシュし、結果を返します。ただし、データベース クエリが単純で、全体的な応答が低下しないほど十分に高速な場合にのみ、このアプローチをお勧めします。
  • Hibernat の二次キャッシュも使用できます。この機能を効率的に使用するには、データベース スキーマ、クエリなどに依存します。
于 2013-06-05T06:35:08.757 に答える