第6章 表の行の読取り

目次

読取りの例外
単一行の取得
子表の取得
multiGet()の使用
表の行の反復使用
フィールド範囲の指定
MultiRowOptionsを使用したネスト表の取得
索引の読取り
パラレル・スキャン

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

  1. TableAPI.get()を使用して一度に1つの行を取得します。

  2. TableAPI.multiGet()またはTableAPI.multiGetIterator()を使用して、シャード・キー(少なくとも主キーの一部に基づく)に関連付けられた行を取得します。

  3. TableAPI.tableIterator()を使用して、シャード・キーまたは索引キーを共有する表の行を取得します。

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

読取りの例外

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

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

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

RequestTimeoutExceptionに対処するには、単にエラーを記録して続行するか、少しの間待ってから操作を再試行します。タイムアウト値を大きくして操作を再試行することもできます。

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