第6章 レコードの読取り

目次

読取りの例外
1つのレコードの取得
multiGet()の使用
multiGetIterator()の使用
storeIterator()の使用
部分範囲の指定

ストアからレコードを取得するにはいくつかの方法があります。次の選択肢があります。

  1. KVStore.get()を使用して一度に1つのレコードを取得します。

  2. KVStore.multiGet()またはKVStore.multiGetIterator()を使用して、メジャー・コンポーネントの完全なセットを共有するレコードを取得します。

  3. KVStore.storeIterator()を使用して、メジャー・コンポーネントの部分的なセットを共有するレコードを取得します。

それぞれの詳細は次の各項で説明します。

読取りの例外

ストアで読取り操作を行うと、3つの例外のいずれかが発生します。1つ目は、ConsistencyExceptionです。この例外は、一貫性ポリシーが満たされないため、操作を完了できないことを表します。詳細は、「一貫性保証」を参照してください。

2つ目の例外はRequestTimeoutExceptionです。これは、ストアのタイムアウト・プロパティで指定された時間内に操作を完了できなかったことを表します。ストアで一度に多くの読取りリクエストをサービスしようとしていることを示している可能性があります。データは、ストア内のレプリケーション・グループ全体でパーティション化され、パーティション化は、キーのメジャー・パス・コンポーネントに基づいて行われることに注意してください。1つのキーに対して多数の読取りリクエストが発生するようにキーを設計した場合、ストア内の一部のレプリケーション・グループがアイドルの場合でもリクエストのタイムアウトが発生することがあります。

リクエストのタイムアウトは、ネットワーク速度の低下やまったく反応しない状態を引き起こしているネットワークの問題を表していることもあります。

RequestTimeoutExceptionに対処するには、単にエラーを記録して続行するか、少しの間待ってから操作を再試行します。タイムアウト値を大きくして操作を再試行することもできます。(特定の操作のタイムアウト値を指定できるKVStore.get()メソッドがあります。)

最後に、一貫性の問題やリクエスト・タイムアウトの問題以外でなんらかの例外が発生したことを表す一般的なFaultExceptionを受け取ることがあります。この対処法は、エラーを記録して続行するか、操作を再試行することのみです。