ヘッダーをスキップ
Oracle® Fusion Middleware Oracle TopLinkのためのCoherence Grid統合ガイド
11g リリース1(11.1.1)
B61395-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

1 Toplink GridとOracle Coherenceの概要

Oracle TopLink 11g リリース1(11.1.1)では、Oracle Coherenceを使用してJPAアプリケーションをスケール・アウトできます。TopLink Gridは、Coherenceを分散共有(L2)キャッシュとして使用することから、JP QL問合せをCoherenceに送ってグリッド全体でパラレル実行してデータベース負荷を削減することまで、スケール・アウトに関する多数のオプションをアプリケーションに提供します。TopLink Gridでは、スケール・アウトするアプリケーションをリライトする必要はありません。JPAへの投資を使用したまま、Coherenceのスケーラビリティを利用できます。

TopLink Gridには次のような利点があります。

このドキュメントでは、次の方法を説明します。

この章の内容は次のとおりです。

1.1 TopLink Grid統合について

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

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

TopLink Grid構成オプションについては、次の各項を参照してください。

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

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

TopLink Gridを使用すると、デフォルトのEclipseLink共有(L2)キャッシュをCoherenceに置き換えることができます。これはグリッド・キャッシュ構成と呼ばれるTopLink Gridの基本構成です。この構成は、Coherenceデータ・グリッドを、Coherenceキャッシュにすべて事前ロードできないデータベースにホストされたデータに依存するJPAアプリケーションに適用します。クラスタ・ノード全体にわたって非常に大きな共有グリッド・キャッシュを定義できます。各共有キャッシュが調整されていることを確認するために特別な構成を追加する必要はありません。エンティティのグリッド・キャッシュ構成をCoherence内に定義することで、そのエンティティに対するEntityManager.find()コールはすべて、関連付けられたCoherenceキャッシュに対するgetコールとなります。Coherenceキャッシュにオブジェクトが含まれていない場合は、データベースが問合せされます。

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

1.3 Coherenceキャッシュの読取りと問合せ

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

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

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

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

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

http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#How_to_Use_EclipseLink_JPA_Query_Hints

1.4 データベースへのエンティティの書込み

別の主要な構成オプションは、データベースへのエンティティの書込み方法の指定です。次のいずれかを行うようにEclipseLinkを構成できます。