LOB API

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

LOB APIは、KVLargeObjectインタフェースで宣言されています。これはKVStoreのスーパーインタフェースであるため、通常の方法でKVStoreハンドルを作成してから、それを使用してLOBメソッドへアクセスします。

LOBメソッドは次のとおりです。

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

LOB変更操作で障害が発生すると、不全LOBが作成されます。不全LOBのLOB値は中間状態であり、アプリケーションによる読取りはできません。不全LOBでのgetLOB()の試行は、PartialLOBExceptionとなります。不完全なputLOB()操作の結果である不全LOBは、操作の再試行によって修復できます。または、削除して、その場所に新しいキー/値を作成できます。不完全な削除操作の結果である不全LOBの場合、削除の再試行を行う必要があります。各LOBメソッドに関連するドキュメントでは、不全LOBにおいて呼び出された場合のそれらの動作について、さらに詳細に説明されています。