LOB API

LOBはチャンクのシーケンスとして表現されるため、LOB APIを使用して排他的にアクセスする必要があります。KVStore.getXXXメソッドのファミリでLOBキーを使用すると、KVS実装に内部的でアプリケーションからは直接使用できない値を受け取ります。

LOB APIは次のとおりです。

LOBの読取りと挿入に使用するメソッドは、原子的ではありません。原子性の要件を解除することにより、ストア全体にチャンクを分散できます。LOBに対する操作はアプリケーションで調整します。LOB実装では、LOBの同時変更を最大限に検出するようにし、同時実行性の競合を検知するとConcurrentModificationExceptionをスローしますが、このような競合がすべて検知されることを保証していません。この例外が発生した場合の安全な措置は、例外を引き起こしたアプリケーション・レベルの調整の問題を修正してから、LOBを削除して新しい値で置き換えることです。

LOBの変更操作でエラーが発生すると、不完全なLOBが作成されます。不完全なLOBのLOB値はなんらかの実行中状態になり、アプリケーションで読み取ることができません。不完全なLOBにしてgetLOB()を実行しようとすると、PartialLOBExceptionがスローされます。不完全なputLOB()操作によって生じた不完全なLOBは、操作を再試行することによって修復できます。または、それを削除して、かわりに新しいキーと値のペアを作成することもできます。不完全な削除操作によって生じた不完全なLOBは削除しなおす必要があります。各LOBメソッドに関するドキュメントでは、不完全なLOBに対して呼び出された場合の動作について詳しく説明しています。