WebSphere® eXtreme
Scale には、OpenJPA と Hibernate Java Persistence
API (JPA) プロバイダーの両方に対するレベル 2 のキャッシュ・プラグインが組み込まれています。L2 キャッシュ・プラグインを構成するには、persistence.xml ファイル内のプロパティーを更新する必要があります。
ヒント: JPA L2 キャッシュ・プラグインは、JPA API を使用するアプリケーションを必要とします。
WebSphere eXtreme
Scale API を使用して JPA データ・ソースにアクセスする場合は、JPA ローダーを使用します。詳しくは、
JPA ローダーの構成を参照してください。
プロパティーの場所
これらのプロパティーは、
persistence.xml ファイルの中で構成できます。これらのプロパティーをこのファイルの中で指定するための構文は、OpenJPA を使用しているか Hibernate を使用しているかによって異なります。
- OpenJPA: DataCache または QueryCache でプロパティーを設定できます。
<property name="openjpa.DataCache"
value="<object_grid_datacache_class(<property>=<value>,...)"/>
または<property name="openjpa.QueryCache"
value="<object_grid_querycache_class(<property>=<value>,...)"/>
- Hibernate:
<property name="objectgrid.configuration"
value="<property>=<value>,..." />
デフォルトのトポロジーおよびプロパティー
構成で何の値も指定されない場合、次のデフォルト・プロパティー値が使用されます。
- ObjectGridName: パーシスタンス・ユニット名
- ObjectGridType: EMBEDDED
- NumberOfPartitions: 1 ( ObjectGrid タイプが EMBEDDED の場合、変更不可)
- ReplicaMode: SYNC
- ReplicaReadEnabled: TRUE (ObjectGrid タイプが EMBEDDED の場合、変更不可)
- MaxUsedMemory: TRUE
- MaxNumberOfReplicas: 47 (分散システムでは、Java 仮想マシンの数以下でなければなりません)
プロパティー
次のプロパティーを使用して、JPA キャッシュ・プラグインを構成できます。
- ObjectGridName
- 固有の ObjectGrid 名を指定します。デフォルト値は、定義済みのパーシスタンス・ユニット名になります。パーシスタンス・ユニット名が JPA プロバイダーから使用できない場合、生成名が使用されます。
- ObjectGridType
- ObjectGrid のタイプを指定します。
有効な値:
- EMBEDDED
- デフォルトおよび推奨の構成タイプ。そのデフォルト設定には、NumberOfPartitions=1、ReplicaMode=SYNC、ReplicaReadEnabled=true および MaxNumberOfReplicas=47 が含まれます。
ReplicaMode パラメーターはレプリカ生成モードの設定に、MaxNumberOfReplicas パラメーターはレプリカの最大数の設定に使用します。システムに 47 を超える Java 仮想マシンがある場合、MaxNumberOfReplicas 値を Java 仮想マシン の数に等しくなるように設定します。
- EMBEDDED_PARTITION
- システムが、分散システムで大量のデータをキャッシュに入れる必要がある場合に使用するタイプ。デフォルトの区画数は 47 でレプリカ・モードは NONE です。少数の Java 仮想マシン のみを持つ小規模のシステムでは、NumberOfPartitions を Java 仮想マシン の数以下に設定します。
システムを調整するために、ReplicaMode、NumberOfPartitions、
および ReplicaReadEnabled 値を指定できます。
- REMOTE
- キャッシュは、カタログ・サービスからリモートの分散 ObjectGrid に接続しようとします。
- MaxNumberOfReplicas
- キャッシュに使用されるレプリカの最大数を指定します。この値は、EMBEDDED タイプのみに適用されます。この数値は、システム内の Java 仮想マシン 数以上にする必要があります。デフォルト値は 47 です。
有効な値: 1 以上
- MaxUsedMemory
有効な値: TRUE または FALSE
メモリーに余裕がなくなった場合にキャッシュ・エントリーの除去を使用可能にします。デフォルト値は TRUE で、JVM ヒープ使用率しきい値が 70 % を超えると、データの除去が開始されます。デフォルトの JVM ヒープ使用率しきい値の比率 (%) は、objectGridServer.properties ファイルの memoryThresholdPercentage プロパティーを設定し、このファイルをクラスパスに配置することによって変更することができます。
Evictor について詳しくは、
キャッシュ・オブジェクトの除去のためのプラグイン「製品概要」で Evictor に関する情報を参照してください。
サーバー・プロパティー・ファイルに関して詳しくは、サーバー・プロパティー・ファイルを参照してください。
- NumberOfPartitions
有効な値: 1 以上
キャッシュに使用される区画の数を指定します。このプロパティーは、
ObjectGridType の値が EMBEDDED_PARTITION に設定されている場合に適用されます。
デフォルト値は 47 です。EMBEDDED タイプの場合、
NumberOfPartitions 値は常に 1 です。
- PlacementScope
- マップ・セットの単一インスタンスの細分度を示します。
有効な値:- DOMAIN_SCOPE
- (デフォルト) 区画ごとに 1 つのプライマリー断片をカタログ・サービス・ドメイン内のコンテナー・サーバーに配置します。
各区画のレプリカ断片は、カタログ・サービス・ドメイン内の他のコンテナー・サーバーに配置されます。
- CONTAINER_SCOPE
- カタログ・サービス・ドメイン内の各コンテナー・サーバーに、1 つのプライマリー断片を配置します。
- PlacementScopeTopology
- カタログ・サービス・ドメイン内のコンテナー・サーバーのリンク・トポロジーを定義します。この値は、PlacementScope 値が DOMAIN_SCOPE 以外の値に設定されたときにのみ使用します。
有効な値:- HUB
- (デフォルト) ハブ・トポロジーが選択されると、1 つのデータ・グリッドがハブとして選択されます。その他のすべてのデータ・グリッドは、ハブに接続します。スポークの接続が 1 つであるため、このトポロジーは、極めて拡張が容易です。ハブは、ボトルネックおよび一時的な単一障害点となる可能性があります。ハブに障害が起こると、別のコンテナー・サーバーに再配置されます。この構成の利点は、単一ポイントであるハブがすべての競合に対処できる、さらに複雑なアービトレーション・コードを作成できることです。
- RING
- リング・トポロジーが選択されると、各データ・グリッドは他の 2 つのデータ・グリッドとリンクされます。リンクの順序は保証されません。
しかし、開始する各コンテナーは、リングに追加される最初のコンテナーと最後のコンテナーとにリンクされることが十分考えられます。このトポロジーが最もスケーラブルですが、2 つのリンクに障害が起こるだけで一時的に切断されてしまいます。コンテナー・サーバーに障害が起こると、障害が検出された後、残った正常なサーバーの間で、リンクが確立されます。
- ReplicaMode
有効な値: SYNC/ASYNC/NONE
キャッシュをレプリカにコピーする場合に使用するメソッドを指定します。
このプロパティーは、ObjectGridType の値を EMBEDDED または EMBEDDED_PARTITION に設定している場合に適用されます。
デフォルト値は、EMBEDDED_PARTITION タイプの場合が NONE で、EMBEDDED タイプの場合は SYNC です。ReplicaMode が、EMBEDDED ObjectGridType の場合に NONE に設定されても、EMBEDDED タイプではやはり SYNC の ReplicaMode が使用されます。
- ReplicaReadEnabled
有効な値: TRUE または FALSE
使用可能にする場合、クライアントはレプリカから読み込みます。
このプロパティーは、EMBEDDED_PARTITION タイプに適用されます。デフォルト値は、EMBEDDED_PARTITION タイプの場合 FALSE です。 EMBEDDED タイプの場合は、常に ReplicaReadEnabled の値は TRUE に設定されます。
- writeBehind
Hibernate プロバイダーの場合のみ: writeBehind が使用可能になっていると、writeBehindInterval 条件または writeBehindMaxBatchSize 条件のどちらかが満たされるまで、更新は一時的に JVM の有効範囲データ・ストレージに保管されます。
重要: writeBehind が使用可能でない場合、他の後書き構成設定は無視されます。
重要: 後書き機能を使用する場合は注意してください。 後書き構成では、JVM 全体でデータを同期する待ち時間はさらに長くなり、更新が失われる可能性がより高くなります。
4 つ以上の JVM を使用可能にした後書き構成を持つシステムでは、1 つの JVM で実行された更新は、約 15 秒遅れてから、他の JVM で使用可能になります。
任意の 2 つの JVM が同じエントリーを更新する場合は、最初に更新をフラッシュする 1 つの JVM はその更新を失います。
有効な値: TRUE または FALSE
デフォルト値: FALSE
- writeBehindInterval
Hibernate プロバイダーの場合のみ: 更新をキャッシュにフラッシュする時間間隔 (ミリ秒) を指定します。
有効な値: 1 以上
デフォルト値: 5000 (5 秒)
- writeBehindPoolSize
Hibernate プロバイダーの場合のみ: 更新をキャッシュにフラッシュするときに使用するスレッド・プールの最大サイズを指定します。
有効な値: 1 以上
デフォルト値: 5
- writeBehindMaxBatchSize
Hibernate プロバイダーの場合のみ: 更新をキャッシュにフラッシュするときの、領域キャッシュごとの最大バッチ・サイズを指定します。例えば、サイズが 1000 に設定されていて、領域キャッシュの後書きストレージに保管された更新が 1000 エントリーを超えた場合は、指定された writeBehindInterval 条件が満たされなくても、更新はキャッシュにフラッシュされます。
おおよそ writeBehindInterval 値に指定された秒ごとか、または各領域キャッシュの後書きストレージのサイズが 1000 エントリーを超えたときか、そのいずれかで、更新はキャッシュにフラッシュされます。
writeBehindMaxBatchSize 条件が一致する場合は注意してください。この条件に一致する領域キャッシュのみが後書きストレージの更新をキャッシュにフラッシュします。 領域キャッシュは、通常、エンティティーまたは照会に対応します。
有効な値: 1 以上
デフォルト値: 1000