Loader プラグインを使用すると、 通常は、同一システムあるいは別システムの永続ストアに保持されるデータのメモリー・キャッシュとしてデータ・グリッド・マップを動作させることができます。 通常、データベースまたはファイル・システムは永続ストアとして使用されます。 リモート Java 仮想マシン (JVM) もデータのソースと して使用でき、eXtreme Scale を使用してハブ・ベースのキャッシュを構築できます。ローダーには、 永続ストアとの間でデータの読み取りおよび書き込みを行うロジックが備わっています。
ローダーは、変更がバックアップ・マップに対して行われた場合、または、バックアップ・マップがデータ要求を満足できない (キャッシュ・ミス) 場合に呼び出されるバックアップ・マップ・プラグインです。ローダーは、キーに関する要求をキャッシュが満足できなくなったときに 起動され、リードスルー機能や、キャッシュにデータをゆっくり設定する機能を 提供します。また、ローダーによって、キャッシュ値が変わったときのデータベース更新 が可能になります。1 つのトランザクション内のすべての変更は、 データベースとの対話の数を最小化できるよう、まとめてグループ化されます。ローダーと共に TransactionCallback プラグイン が、バックエンド・トランザクションの境界をトリガーするために 使用されます。このプラグインの使用は、複数のマップが 1 つのトランザクションに含まれている 場合、または、トランザクション・データがコミットなしでキャッシュに書き込まれる場合に 重要です。
ローダーは、データベース・ロックの保持を回避するために、資格過剰の更新を 使用することもできます。バージョン属性をキャッシュ値の中に入れることによって、 値がキャッシュ内で更新されるときにローダーは値の前と後のイメージを見ることが できます。その後、データベースまたはバックエンドを更新する際にこの値を使用して、データが更新されていないことを検証できます。 ローダーは、開始時にデータ・グリッドをプリロードするよう構成することもできます。 区画に分割されている場合、各区画ごとに 1 つのローダー・インスタンスが関連付けられます。 例えば、「Company」マップに 10 個の区画がある場合、 プライマリー区画ごとに 1 つずつ、10 個のローダー・インスタンスがあります。このマップのプライマリー断片が アクティブにされると、ローダーに対して preloadMap メソッドが 同期または非同期で呼び出され、マップ区画にバックエンドからのデータが自動的に ロードされます。非同期で呼び出される場合、 すべてのクライアント・トランザクションはブロックされ、データ・グリッドへの矛盾するアクセスを防止 します。代わりに、クライアント・プリローダーを使用してデータ・グリッド全体にデータをロード できます。
2 つの組み込み ローダーにより、リレーショナル・データベース・バックエンドとの統合が非常に単純化 されます。JPA ローダーは、Java Persistence API (JPA) 仕様の OpenJPA および Hibernate 実装の両方のオブジェクト関係マッピング (ORM) 機能を使用します。 詳しくは、JPA ローダーを参照してください。
複数データ・センター構成でローダーを使用する場合は、どのようにして改訂データとキャッシュの整合性をデータ・グリッド間で維持するかを検討する必要があります。詳しくは、マルチマスター・トポロジーでのローダーについての考慮事項を参照してください。