8.4. スキューの書き込み


書き込みスキューは、2 つのトランザクションが独立して同時に同じキーの読み取りと書き込みを行うときに発生します。書き込みスキューの結果、両方のトランザクションは同じキーに対して更新を正常にコミットしますが、値は異なります。

ライブラリーモードでは、Red Hat Data Grid は自動的に書き込みスキューチェックを実行し、最適なトランザクションで REPEATABLE_READ 分離レベルのデータの整合性を確保します。これにより、Red Hat Data Grid はトランザクションの 1 つを検出し、ロールバックすることができます。

注記

write-skew 属性はライブラリーモードで非推奨となりました。Remote Client/Server Mode では、この属性は有効な宣言ではありません。

LOCAL モードで動作する場合、書き込みスキューの確認は Java オブジェクト参照に依存して違いを比較します。これにより、書き込みスキューをチェックするための信頼性の高い技術が提供されます。

クラスター環境では、データをバージョン管理し、信頼できる書き込みのスキューチェックを行う必要があります。Red Hat Data Grid は、SIMPLE バージョン管理と呼ばれる EntryVersion インターフェースの実装を提供します。これは、エントリーが更新されるたびに増分される期間でサポートされます。

<versioning scheme="SIMPLE|NONE" />
Copy to Clipboard Toggle word wrap

または

new ConfigurationBuilder().versioning().scheme(SIMPLE);
Copy to Clipboard Toggle word wrap

8.4.1. 悲観的トランザクションでのキーへの書き込みロックの強制

pessimistic トランザクションで write-skews を回避するには、Flag.FORCE_WRITE_LOCK を指定して読み取り専用でキーをロックします。

注記
  • トランザクション以外のキャッシュでは、Flag.FORCE_WRITE_LOCK は動作しません。get() 呼び出しは、キーの値を読み取りますが、ロックをリモートで取得しません。
  • Flag.FORCE_WRITE_LOCK は、同じトランザクションでエンティティーが後で更新されるトランザクションと併用する必要があります。

Flag.FORCE_WRITE_LOCK の例については、以下のコードスニペットを比較してください。

// begin the transaction
if (!cache.getAdvancedCache().lock(key)) {
   // abort the transaction because the key was not locked
} else {
   cache.get(key);
   cache.put(key, value);
   // commit the transaction
}
Copy to Clipboard Toggle word wrap
// begin the transaction
try {
   // throws an exception if the key is not locked.
   cache.getAdvancedCache().withFlags(Flag.FORCE_WRITE_LOCK).get(key);
   cache.put(key, value);
} catch (CacheException e) {
   // mark the transaction rollback-only
}
// commit or rollback the transaction
Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る