ストアでの新規レコードの作成と既存のレコードの更新は、通常同じ操作です(ただし、レコードの更新の場合のみ、あるいは作成の場合にのみ機能するメソッドがあります。これらについては、この項の後半で説明します)。どちらの場合も、適切なキーを使用するレコードをストアに書き込むだけです。そのキーのレコードが現在ストアに存在しない場合、レコードが作成されます。指定されたキーを使用するレコードが存在する場合、ストアに書き込まれる情報でレコードが更新されます。
通常のレコードをストアに格納するには、次のようにします。
キーのすべてのメジャー・パス・コンポーネントとマイナー・パス・コンポーネントを必ず指定してキーを作成します。メジャー・パス・コンポーネントとマイナー・パス・コンポーネントの詳細は、「レコードの設計に関する考察」を参照してください。
値を作成します。これは、ストアに格納する実際のデータです。通常はAvroデータ形式(「Avroスキーマ」および「Avroバインディング」で説明)を使用します。
KVStore
クラスのputメソッドのいずれかを使用してレコードをストアに格納します。
次に、ストアへのレコードの書込みの簡単な例を示します。KVStore
ハンドルがすでに作成されているものとします。簡略化のため、この例では簡単に文字列をシリアライズして、格納操作の値として使用します。これはコードで実行するものではありません。むしろ、この簡単な例でもAvroデータ形式を使用します。
package kvstore.basicExample; ... import oracle.kv.Key; import oracle.kv.Value; import java.util.ArrayList; ... ArrayList<String> majorComponents = new ArrayList<String>(); ArrayList<String> minorComponents = new ArrayList<String>(); ... // Define the major and minor path components for the key majorComponents.add("Smith"); majorComponents.add("Bob"); minorComponents.add("phonenumber"); // Create the key Key myKey = Key.createKey(majorComponents, minorComponents); String data = "408 555 5555"; // Create the value. Notice that we serialize the contents of the // String object when we create the value. Value myValue = Value.createValue(data.getBytes()); // Now put the record. Note that we do not show the creation of the // kvstore handle here. kvstore.put(myKey, myValue);
前述した非常に単純な使用方法であるKVStore.put()
メソッド以外に、使用できる重要な格納操作が3つあります。
KVStore.putIfAbsent()
このメソッドでは、キーが現在ストアに存在しない場合にのみレコードが格納されます。つまり、このメソッドは、作成操作になった場合にのみ成功します。
KVStore.putIfPresent()
このメソッドでは、キーがすでにストアに存在する場合にのみレコードが格納されます。つまり、このメソッドは、更新操作になった場合にのみ成功します。
KVStore.putIfVersion()
このメソッドでは、指定されたバージョン情報に値が一致する場合にのみレコードが格納されます。詳細は、「バージョンの使用」を参照してください。