ヘッダーをスキップ
Oracle® Fusion Middleware Oracle TopLinkのためのCoherence Grid統合ガイド
11g リリース1(11.1.1)
B61395-01
  目次へ移動
目次

前
 
次
 

TopLink Grid統合の理解

TopLink GridはTopLink JPA実装(EclipseLink)とOracle Coherenceとを統合するもので、2つの開発アプローチを提供します。

JPAアプリケーションをCoherenceのデータ・グリッドと統合する際は、可能性のあるメリットと制限事項に注意する必要があります。あらゆる可能性を理解するためには、グリッドの動作およびグリッドとJPA構成との関連性について理解する必要があります。

この項では、次の構成オプションについて説明します。

エンティティ・キャッシュ

EclipseLinkには、デフォルトでEntityManagerFactory管理の共有エンティティ・キャッシュが備わっています。この共有キャッシュにより、単一のJVM内で稼働する、Java EEサーバーがホストするマルチスレッド・アプリケーションのパフォーマンスを向上させることができます。

TopLink Gridを使用すると、デフォルトのEclipseLink共有(L2)キャッシュをCoherenceに置き換えることができます。これにより、クラスタ・ノード全体にわたって非常に大きな共有グリッド・キャッシュがサポートされ、各共有キャッシュが調整されていることを確認するための追加構成を行う必要がなくなります。エンティティをCoherence内にキャッシュされるグリッドとして構成すると、そのエンティティに対するEntityManager.find()コールはすべて、関連付けられたCoherenceキャッシュに対するgetとなります。Coherenceにオブジェクトが含まれていない場合は、データベースが問合せされます。

詳細は、「グリッド・キャッシュ」を参照してください。

読取りおよび問合せ

グリッド・キャッシュ構成以外にも、読取り問合せをCoherenceに送るようTopLink Gridを構成できます。TopLink JPAのCacheLoaderを構成すると、キャッシュ・ヒットがない場合でもオブジェクトをデータベースから読み取ってキャッシュに挿入することができるので、以降の問合せでそのオブジェクトが使用可能になります。Coherenceでは非常に多数のオブジェクトを管理できるため、1つのクラスタ・メンバー内での読取りが他のメンバーに対して即時利用可能になるたびに、キャッシュ・ヒットの確率が高くなります。

Coherenceを使用してエンティティ・グリッド・キャッシュをグリッド全体に分散させることが効果的である一方で、非主キー問合せに対するサポートは特にメリットがあります。エンティティをグリッド読取りとして構成すると、すべての読取りがCoherenceに送られます。JPQL問合せは自動的にCoherenceフィルタに変換され、フィルタに一致するオブジェクトがグリッドから取得されます。Coherenceは、すべてのフィルタを各クラスタ・メンバーでパラレルに実行します。したがって、すべてのオブジェクトが1つのメンバー内に存在する場合と比較すると、問合せの処理速度が大幅に速くなります。

フィルタはCoherenceキャッシュ内のオブジェクトにのみ適用されるため、CacheStoreまたはCacheLoaderが非定型の問合せ処理に影響を与えることはありません。この構成では、デフォルトで問合せはデータベースに対して実行されません。ただし、次の例に示すように、oracle.eclipselink.coherence.integrated.querying.IgnoreDefaultRedirectorクラスを使用して、この動作を問合せヒントによってオーバーライドすることはできます。

query.setHint(QueryHints.QUERY_REDIRECTOR, new IgnoreDefaultRedirector());

これにより、問合せはCoherenceキャッシュではなくデータベースに送られます。

EclipseLink JPAの問合せヒントの使用方法の詳細は、EclipseLinkのドキュメントを参照してください。

書込み

エンティティをデータベースに書き込む方法を指定しているのは、別のキー構成オプションです。次のようにEclipseLinkを構成できます。

  • エンティティを直接データベースに書き込んでからCoherenceに挿入します(データベースの状態を反映させます)。

または

  • エンティティをCoherenceに挿入してから、CoherenceでCacheStoreを使用してデータベースへの書込みを行います。

CacheStoreメソッドは、非同期データベース書込みを可能にするCoherenceのライトビハインド機能をサポートしています。このアプリケーションを使用すると、データベースが戻るのを待たずに処理を続行できます。

ただし、この構成にはいくつかの制限事項があります。たとえば、JTA統合やその他のEclipseLinkパフォーマンス機能(バッチ書込み、パラメータ・バインディング、ストアド・プロシージャ、文の順序付けなど)を使用できないことなどです。