第5章 バッチ化 API


5.1. バッチ化 API

Red Hat JBoss Data Grid クラスターがトランザクションの唯一の参加者である場合、バッチ化 API が使用されます。複数のシステムがトランザクションの参加者である場合は、トランザクションマネージャーを使用する Java トランザクション API (JTA) のトランザクションが使用されます。

注記

バッチ化 API は Red Hat JBoss Data Grid のライブラリーモードでのみ使用できます。

5.2. Java トランザクション API

Red Hat JBoss Data Grid では、Java トランザクション API (JTA) に対応するトランザクションの設定、使用、および参加がサポートされます。

JBoss Data Grid は各キャッシュ操作に対して以下を実行します。

  1. 最初に、現在スレッドに関連付けされているトランザクションを読み出します。
  2. XAResource が登録されていない場合は、トランザクションマネージャーに登録し、トランザクションがコミットまたはロールバックされたときに通知を受け取るようにします。

5.3. バッチ化および Java トランザクション API (JTA)

Red Hat JBoss Data Grid では、バッチ化機能により、JTA トランザクションがバックエンドで開始され、スコープ内のすべての呼び出しがそれに関連付けられます。このため、バッチ化機能は単純なトランザクションマネージャー実装をバックエンドで使用します。結果として、次の動作が行われます。

  1. 呼び出し中に取得されたロックは、トランザクションがコミットまたはロールバックするまで保持されます。
  2. すべての変更は、クラスター内のすべてのノード上にあるバッチでトランザクションコミットプロセスの一部としてレプリケートされます。複数の変更が単一のトランザクション内で確実に行われるようにするため、レプリケーショントラフィックがより少ない状態になり、パフォーマンスが向上します。
  3. 同期のレプリケーションまたはインバリデーションを使用する場合、レプリケーションまたはインバリデーションに失敗するとトランザクションはロールバックされます。
  4. キャッシュがトランザクションで、キャッシュローダーが存在する場合、キャッシュローダーはキャッシュのトランザクションに登録されません。そのため、トランザクションがインメモリー状態を適用し、変更をストアに適用できないと (部分的に)、キャッシュローダーレベルで不整合が発生する可能性があります。
  5. トランザクションに関連するすべての設定はバッチ化にも適用されます。

5.4. バッチ化 API の使用

5.4.1. バッチ化 API の設定

バッチ化 API を使用するには、以下の例のようにキャッシュ設定で呼び出しのバッチ化を有効にします。

Configuration c = new ConfigurationBuilder().transaction().transactionMode(TransactionMode.TRANSACTIONAL).invocationBatching().enable().build();

Red Hat JBoss Data Grid では、呼び出しバッチ化はデフォルトで無効になり、バッチ化は定義されたトランザクションマネージャーなしで使用できます。

5.4.2. バッチ化 API の使用

キャッシュがバッチ化を使用するよう設定された後に、キャッシュで次のように startBatch() および endBatch() を呼び出して、バッチ化を使用します。

Cache cache = cacheManager.getCache();

バッチを使用しない場合

cache.put("key", "value");

cache.put(key, value); 行が実行されると、値はすぐに置き換えられます。

バッチを使用する場合

cache.startBatch();
cache.put("k1", "value");
cache.put("k2", "value");
cache.put("k3", "value");
cache.endBatch(true);
cache.startBatch();
cache.put("k1", "value");
cache.put("k2", "value");
cache.put("k3", "value");
cache.endBatch(false);

cache.endBatch(true); が実行されると、バッチの開始後に行われたすべての変更が適用されます。

cache.endBatch(false); が実行されると、バッチで行われた変更は破棄されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.