2016-07-19 11 views
2

私は、データベースをストレージとして使用するキャッシュの解決策を探しましたが、クエリキャッシングが出てきました。データをキャッシュするためのストレージメカニズムとして実際にデータベースを使用するソリューションはありますか?データベースバックアップキャッシュ用のJavaソリューション

いくつかの観点を説明すると、私の問題は次のようなものです。データベースを照会するよりもはるかに時間がかかるWebサービスリソースを消費しています。そのため、Webサービスリクエストの結果をデータベースにキャッシュします。

私はこれを手で行うことができることを認識していますが、私の目的には有益であるかどうかを少なくとも調査することができる既存の解​​決策がいくつかあります。

詳細情報:私の現在のプロジェクトライブラリは、Java EE 7とHibernateで構成されています。

私はEHCacheが私にとって何かを望んでいたと思っていましたが、メモリまたはファイルベースのソリューションしか提供していないようです。この特定のキャッシュのメモリフットプリントは大きすぎます。また、これはクラスタ化された環境で実行されるため、ファイルベースのソリューションによって同期の問題が発生します。

+0

あなたはここに疑問の質問があります。http://stackoverflow.com/questions/14026041/best-way-to-cache-restful-api-results-of-get-calls –

答えて

0

RedHatのInfinispanには、あなたが求めていることを可能にするJDBCベースのストレージ実装がいくつかあります。見てください:http://infinispan.org/docs/stable/user_guide/user_guide.html#jdbc_based_cache_loaders(免責事項:私はそれを使用経験がないので、どのように安定して実行するか、それがセットアップする方法を言うことはできません)。

一般に、キャッシュ永続性のためのデータベースを使用するとProとConの引数があります。 Proの議論は、データベースがすでに配置されているため、導入とリソース管理が容易になるということです。

データベースを使用すると、システムに負荷がかかります。キャッシュ更新の場合、ディスクを同期させるために大量のデータベーストランザクションが発生し、CPUがIOの完了を待つことになります。キャッシングの場合、データストレージは本質的に一時的なものなので、この動作は必要ありません。

0

私は通常、キューに基づいたソリューションを使用するようアドバイスします。クライアント

  • が上の操作を実行ふさがないでください

    • :ソリューションのこれらの種類は、クライアント(アプリケーション)とサーバ(Webサービスのエンドポイント)を分離することを許可しますので、この非ブロックパターンを実行することができますあなたが必要な場合は
    • は、あなたが管理するためにDB

    私はあなたがキュー機能を実装するためのActiveMQを使用することをお勧めしてApacheのキャメルに受信したデータを保存することができますそこに到着したときのデータを受け取ったサービスコール/変換/持続性。

  • 関連する問題