Consistencyベース・クラスの静的インスタンスを使用して、一貫性保証のレベルを指定できます。そのように使用できるインスタンスは2つあります。
Consistency.ABSOLUTE
操作がマスター・ノードでサービスされることを要求します。この場合、レコードは常にマスターと一致します。
これは、要求できる一貫性保証のうち最も厳しいものですが、すべての読取りと書込みのリクエストがマスター・ノードでサービスされるというコストを伴います。すべてのトラフィックをマスター・ノード(ストア内に1つのみあるマシン)に向けると、パフォーマンスの問題がすぐに発生する可能性があります。このことから、この一貫性保証はあまり使用しないようにします。
Consistency.NONE_REQUIRED
マスターと比較したレプリカの状態に関係なく、格納操作を進めることができます。これは、要求できる一貫性保証のうち最も緩やかなものです。格納のパフォーマンスは最もよくなりますが、アプリケーションが、古い(最新でない)情報を操作する可能性が高くなります。
たとえば、必ず最新データを扱う必要があるクリティカルな読取り操作を行うとします。この場合、次のようにします。
package kvstore.basicExample;
...
import oracle.kv.Consistency;
import oracle.kv.ConsistencyException;
import oracle.kv.Key;
import oracle.kv.Value;
import oracle.kv.ValueVersion;
import java.util.ArrayList;
...
ArrayList<String> majorComponents = new ArrayList<String>();
...
// Define the major path components for the key
majorComponents.add("Smith");
majorComponents.add("Bob");
// Create the key
Key myKey = Key.createKey(majorComponents);
// Now retrieve the record. Note that we do not show the creation of
// the kvstore handle here.
try {
ValueVersion vv = kvstore.get(myKey,
Consistency.ABSOLUTE,
0, // Timeout parameter.
// 0 means use the default.
null); // Timeout units. Null because
// the Timeout is 0.
Value v = vv.getValue();
/*
* From here, deserialize using your Avro binding.
*/
} catch (ConsistencyException ce) {
// The consistency guarantee was not met
}