kv_execute()

#include <kvstore.h>

kv_error_t 
kv_execute(kv_store_t *store,
           const kv_operations_t *list,
           kv_operation_results_t **result,
           kv_durability_t durability,
           kv_timeout_t timeout_ms) 

操作シーケンスを実行します。操作リストはkv_create_operations()を使用して作成され、操作シーケンス内の個別ステップはkv_create_delete_op()kv_create_put_op()などの関数を使用して作成されます。

このシーケンスに対して作成された各操作は、単一のキーに対して動作し、対応するOracle NoSQL Databaseの操作に一致します。たとえば、kv_create_put_with_options_op()関数によって生成される操作は、kv_put_with_options()関数に対応しています。各操作を作成するための引数のパターンは似ていますが、次の点が異なります。

  • 永続性引数は、このシーケンスに対して作成された操作には渡されません。この引数は操作のバッチ全体の実行に適用され、この関数に渡されるためです。

  • 個々の操作は、個々の操作が失敗した場合に操作のシーケンス全体を中止する必要があるかどうかを示します。

kv_execute()への1回のコールで実行されるすべての操作が同じメジャー・キー・パスを共有する必要があること、およびそのメジャー・キー・パスが完了する必要があることに注意してください。

パラメータ

  • store

    storeパラメータは、この操作のシーケンスを実行するストア・ハンドルです。

  • list

    listパラメータは、操作のリストです。このリスト構造は、kv_create_operations()を使用して割り当てられます。

  • result

    resultパラメータは、操作結果のリストです。結果リストの各要素は、操作のシーケンス内のいずれかの操作を実行した結果を表します。

    kv_operation_results_size()を使用して、操作結果セットに含まれる要素の数を検出します。

    特定の操作が成功したかどうかを判別するには、kv_result_get_success()を使用します。操作によって操作されるkey/valueペアのバージョンを確認するには、kv_result_get_version()を使用します。操作実行前のkey/valueペアの以前のバージョンを確認するには、kv_result_get_previous_version()を使用します。操作を実行する前にkey/valueペアの値を確認するには、kv_result_get_previous_value()を使用します。

    結果リストで使用されるリソースを解放するには、kv_release_operation_results()を使用します。

  • durability

    durabilityパラメータは、この操作シーケンスが実行されるときに使用される永続性ポリシーを識別します。指定したシーケンスに含まれる操作はすべて、シリアライズ可能分離を効率的に提供する単一トランザクションのスコープ内で実行されます。トランザクションが開始され、この関数によってコミットまたは中断されます。これは、操作がすべて本質的にアトミックであることを意味します。すなわち、操作がすべて成功するか、いずれの操作も一切実行されていないままの状態でストアが残されます。

    永続性ポリシーは、kv_create_durability()を使用して作成します。

    このパラメータがNULLである場合、ストアのデフォルトの永続性ポリシーが使用されます。

  • timeout_ms

    timeout_msパラメータは、操作シーケンスを処理する際の時間間隔の上限をミリ秒単位で識別します。指定された限度を超えないよう最善が尽くされます。ゼロの場合は、デフォルトの要求タイムアウトが使用されます。