Caching
 

キャッシング - 休止状態のキャッシュは、これは私が読んで最高の説明です。ストレートは、ポイントを切った。回転数(rpm)

キャッシュは、アプリケーション、および物理的なデータソースとの間で、その役割は、これにより、アプリケーションの動作パフォーマンスを向上させる、物理データソースのアプリケーションへのアクセス頻度を減少させることです。データキャッシュは、物理データソースのデータのレプリケーションでは、アプリケーションの実行時間は読んで、キャッシュと物理データソースを同期させる特定の瞬間やイベントでは、キャッシュからデータを書き込む。
gbvy[W
キャッシュメモリは、通常のメディアなので、読み込まれ、高速。。。
内部キャッシュおよび外部キャッシュ:SessionFactoryのキャッシュは、2つのカテゴリに分けることができるキャッシュとSessionFactoryセッションキャッシュを含む、Hibernateのキャッシュ。セッションキャッシュは、内蔵されても、最初のレベルのキャッシュのHibernateとして知られている、アンインストールすることはできません。セッションのSessionFactory内蔵キャッシュとキャッシュは、前者を達成する上で非常に方法に似ていますでSessionFactoryオブジェクトコレクションプロパティは、セッションのコレクションプロパティを参照するデータの一部が含まれているデータの一部が含まれている。。SessionFactoryの外部キャッシュは、設定プラグイン。デフォルトでは、SessionFactoryは有効にしないこのプラグイン。外部データは、することができるデータベースのデータを、外部キャッシュメモリやハードディスクメディアのコピーをキャッシュされている。SessionFactoryの外部キャッシュは、Hibernateの番目のレベルのキャッシュとして知られている。
このレベルのキャッシュのHibernate永続化層が配置されている、データのデータベースのコピーに格納されている、それらの間にその差がいいですか?キャッシュのスコープおよびキャッシュの並行戦略:二つの違いを理解するために、キャッシュの2つの特徴の永続化層の深さを理解する必要があります。




。キャッシュの範囲は次の3つのカテゴリに分かれています。
1サービスの範囲:現在のトランザクションは、キャッシュへのアクセスすることができます。キャッシュのライフサイクルは、トランザクションの終わりに、キャッシュがライフサイクルを通じてされるトランザクションのライフサイクルに依存し、。。サービスは、アプリケーションサービスや、データベーストランザクションすることができ、各トランザクションは、独自のキャッシュを持って、相互に関連するオブジェクトの一般的に使用される形式でデータをキャッシュする。
2プロセス範囲:キャッシュは、プロセス内のすべての事項についての共有されている。これらの取引は、キャッシュへの同時アクセスすることができると、キャッシュがトランザクション分離するために必要なメカニズムを実行する必要があります。キャッシュのライフサイクルはプロセスのライフサイクルに依存し、プロセスの最後には、キャッシュがライフサイクルを越すようになる。メディアは、メモリやハードディスクに保存することができますので、データのプロセス全体のキャッシュを大量には、格納することができる。。。
3クラスタ全体:クラスタ環境では、キャッシュは、マシンまたは複数のマシンは、プロセスを共有することです。データがキャッシュ内にキャッシュ内のデータの整合性を確保するために、リモートで各プロセスの環境では、プロセス間通信のためのクラスタノードにコピーされ、キャッシュデータは、多くの場合ばらばらなオブジェクトの形式でデータを使用されて。
アクセス速度はデータベースに直接、はるかに高速なデータにアクセスするためにバインドされていないため、ほとんどのアプリケーションでは、それは慎重に、クラスタ全体のキャッシュを使用する必要を考慮する必要があります。
。トランザクションのスコープは、対応するキャッシュデータの中から発見されていない場合だけでなく、プロセスバッファの範囲またはクラスタの調査の範囲内には、まだ場合は、データベースクエリからのみ、見つかりませんでした。サービス範囲の永続化層のキャッシュは通常、それが必要な場合、最初のレベルのキャッシュです。範囲またはキャッシュクラスタの永続化層の範囲のプロセス番目のレベルのキャッシュは、通常オプション。
永続化層は、キャッシュの並行戦略をアクセスするために
複数の同時実行トランザクションが同時に並行性の問題を引き起こす可能性が、キャッシュの永続化層に同じデータにアクセスすると、我々は、トランザクション分離するために必要な措置を採用する必要があります。
プロセスでは、キャッシュ領域またはクラスタ、第2レベルのキャッシュの範囲は、そこに問題が複雑になる。。
。これは、トランザクション分離レベルRepeatable Readをを提供しています。それは汚れの読み取りと非反復は、並行性の問題は、この種の読み取りできなくなるためしばしば読んでめったに変更されたデータについては、あなたは、この分離タイプを使用することができます。
記事を読むタイプを書く:トランザクション分離レベルとしてRead Committed提供しています。。それは同時実行の問題を防ぐことができるため、しばしば読んでめったに変更されたデータについては、汚れなど読んで、この分離タイプを使用することができます。
非厳密な読み取りと書き込みのタイプ:データベースのキャッシュは、データの整合性を保証するものではありません。つのトランザクションが同じデータがキャッシュされる場合がありますアクセス同時に存在する場合、データが汚れ回避しようとする非常に短い有効期限のデータを設定する必要があります読み取り。非常に少ないが、変更するには、汚れた時折データを読み取ることができる、この同時方式を使用することができます。
読み取り専用の:参照データなどのデータを変更しないためには、この同時方式を使用することができます。
。。
何番目のレベルキャッシュに格納するデータの種類は?
1変更されたデータはほとんどされ
図2は、非常に重要なデータではありませんが、データが許可されて時折同時




4リファレンスデータ
ない番目のレベルのキャッシュにデータを格納するための適切な?
1多くの場合、データを変更される
2財務データは、絶対に同時許可していません


。Sessionオブジェクトのライフサイクルは、通常、データベーストランザクションまたはアプリケーションのトランザクションに対応していますので、それのキャッシュは、トランザクションのキャッシュのスコープです。。最初のレベルのキャッシュが必要ですが、実際にはより取り外しもできるようにすることはできません。最初のレベルのキャッシュでは、永続クラスの各インスタンスは一意のOIDを持って。
。SessionFactoryのオブジェクトは、アプリケーションのライフサイクル全体のプロセスに対応するため、第2レベルのキャッシュのためのスコープは、プロセスまたはクラスタ全体のキャッシュです。キャッシュデータが緩んでオブジェクトを格納。番目のレベルのオブジェクトの並行性の問題は、適切な戦略の採用への同時アクセスを必要とする、発生する可能性がありますと、キャッシュされたデータのための戦略は、トランザクションの分離レベルを提供する。特定のキャッシュの実装ソフトウェアとHibernateの統合のためのキャッシュアダプタ。。


2)第2レベルキャッシュにIDの下に置かれるすべてのデータオブジェクトを取得する。
3)Hibernateはデータを、セッションレベルのキャッシュからの最初のチェックにアクセスするためのIDに基づいてオブジェクトの場合は、次にクエリと、検索からデータベースを、あなたは二次キャッシュ、二次キャッシュからチェック設定した場合、発見から結果は、IDをキャッシュに追加する。
4)キャッシュをしながら更新するには、データを追加、更新、削除。
。この目的のために、Hibernateはクエリクエリの条件に対してバッファを提供しています。
次のようにHibernateのクエリキャッシュの戦略は:
1)すべての情報のHibernate最初のクエリキー、条件を含むクエリのキーが設定されたリクエストクエリ、一般的な情報を形成する:SQLを、SQLは等)の位置rowStart、レコードmaxRowsの最大数の開始範囲(記録は、パラメータを必要と。
2)Hibernateクエリが結果リスト問合せキーキャッシュに応じて対応を見つけるために。。


概念は、似ていますが違いは:フレームワークは、柔軟にHibernateキャッシュのようなものです永続層の前にキャッシュの設定などJdonキャッシュの場所で指定することができます。でなく、目の前に詳細に設定することができますビジネス層のフロントだけでなく、永続化層を達成することができ、共有サービス層もJiveJdon3に実装されているキャッシュの前に。
キャッシュへの早期アクセスの利点は:サービス層の後にキャッシュから直接プレゼンテーション層を要求しない、ビジネス層は、ユーザーインターフェイス側に近いキャッシュのオーバーヘッドを保存するには、パフォーマンス、頻繁に使用するクエリよりキャッシュは、ファットクライアントのパフォーマンスの利点は、クライアントのキャッシュ、好ましくは、小型のすべての側面の高い消費のヒット率を。
バッファ層とキャッシュの永続化層で動作することができますビジネス層のも、パフォーマンスはキャッシュのとほぼ同じ給付されている場合、オブジェクトは、キャッシュの永続化層に保存する必要があります。

、フォーラムの状態が、私は長くなることがメモリ内にあるため、データベースに保存され、このオブジェクトの永続性を必要としない場合:キャッシュに保存されている場合はオブジェクトを取得している想像して、明らかに、永続化層だけで不便トリガされるとキャッシュ、永続層だけでトリガを保持している場合、それは、私たちが(それを提供するなどのデータベース機能に保存されていないこれはHibernateの2次キャッシュを保存する必要があるかもしれません)データベースに保存して別のを強制する必要がありますキャッシュが直接行うことができます。
したがって、特定のビジネス層は、コンテナ事業は非常に別の機能Jdonのフレームワークですキャッシュにアクセスできるようにすることが重要です、春には組み合わせがない+関数のような洗練されたアイデアを参照してくださいするために、Hibernate。
Jdonフレームワーク層は、キャッシュ、またはセッションを操作するビジネス上のメリットをもたらすことができます:
1。自由な場のモデルでは、プレゼンテーションの他のためにのみ(実装ではアクションの支柱のようなプレゼンテーション層から分離されたいくつかのビジネスコード(ショッピングカートなど)を有することなく、ビジネスのスコープは、すべてのビジネスロジック層を決定するので、の枠組みの中で層が痛みのレベルと分散のコードの選択を減らすために、)自体は温泉1.xのされていないセッションに動作するように。
。。