ストアへのレコードの書込み

その他の格納操作

ストアでの新規レコードの作成と既存のレコードの更新は、通常同じ操作です(ただし、レコードの更新の場合のみ、あるいは作成の場合にのみ機能するメソッドがあります。これらについては、この項の後半で説明します)。どちらの場合も、適切なキーを使用するレコードをストアに書き込むだけです。そのキーのレコードが現在ストアに存在しない場合、レコードが作成されます。指定されたキーを使用するレコードが存在する場合、ストアに書き込まれる情報でレコードが更新されます。

通常のレコードをストアに格納するには、次のようにします。

  1. キーのすべてのメジャー・パス・コンポーネントとマイナー・パス・コンポーネントを必ず指定してキーを作成します。メジャー・パス・コンポーネントとマイナー・パス・コンポーネントの詳細は、「レコードの設計に関する考察」を参照してください。

  2. 値を作成します。これは、ストアに格納する実際のデータです。通常はAvroデータ形式(「Avroスキーマ」および「Avroバインディング」で説明)を使用します。

  3. 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()

    このメソッドでは、指定されたバージョン情報に値が一致する場合にのみレコードが格納されます。詳細は、「バージョンの使用」を参照してください。