kv_multi_get()

#include <kvstore.h>

kv_error_tkv_multi_get(kv_store_t *store,
             const kv_key_t *parent_key,
             kv_iterator_t **return_iterator,
             const kv_key_range_t *sub_range,kv_depth_enum depth,
             kv_consistency_t *consistency,
             kv_timeout_t timeout_ms) 

parent_keyに関連付けられたすべての子孫key/valueペアを返します。sub_rangeおよびdepth引数を使用して、取得するkey/valueペアをさらに制限できます。key/valueペアは、シリアライズ可能な分離性効果的に実現する単一のトランザクションの範囲内でフェッチされます。

このAPIは、結果をすべてメモリー内に一度に保持できない場合、メモリー不足のためにエラーが発生したり、基礎となるJava仮想マシンで過度のガベージ・コレクション・アクティビティが発生したりする可能性があるため、慎重に使用する必要があります。かわりに、kv_multi_get_iterator()の使用を検討してください。

この関数では、完全なメジャー・パスを持つparent_keyの子孫であるkey/valueペアのフェッチのみが許可されます。部分的なメジャー・パスを使用してparent_keyの子孫をフェッチするには、かわりにkv_store_iterator()を使用します。

パラメータ

  • store

    storeパラメータは、key/valueペアの取得元であるストアへのハンドルです。

  • parent_key

    parent_keyパラメータは、子レコードを取得する親キーです。NULLにはできません。メジャー・キー・パスは完全である必要があります。マイナー・キー・パスは省略しても部分パスでもかまいません。

  • return_iterator

    return_iteratorパラメータは、結果セットのコピー先となるメモリーを参照します。kv_release_iterator()を使用して、このイテレータによって使用されるリソースを解放します。

    ここで返されるイテレータはトランザクションの処理に関与します。つまり、イテレータが解放される時点まで、イテレータの内容は静的になります(分離されます)。

  • sub_range

    sub_rangeパラメータは、parent_keyの下位の範囲を、このキー範囲のマイナー・パス・コンポーネントにまで、さらに制限します。NULLである可能性があります。

    キー範囲は、kv_init_key_range()を使用して構築します。

  • depth

    depthパラメータは、取得が可能な深さを指定します。子のみ、親とすべての子、すべての子孫などの取得を許可できます。すべての深さオプションについては、kv_depth_enumを参照してください。

  • consistency

    consistencyパラメータは、この読取り操作で使用する一貫性ポリシーを識別します。一貫性ポリシーは、kv_create_simple_consistency()kv_create_time_consistency()またはkv_create_version_consistency()を使用して作成されます。

  • timeout_ms

    timeout_msパラメータは、操作を処理するための時間間隔の上限を指定します。指定された限度を超えないよう最善が尽くされます。ゼロの場合は、デフォルトの要求タイムアウトが使用されます。デフォルトの要求タイムアウトは、kv_config_set_timeouts()を使用して設定されます。