BatchWriteRow は、1 つ以上のテーブル内の複数のデータ行を挿入、変更、または削除します。

基本的には、複数の PutRow、UpdateRow、 DeleteRow 操作のセットです。 各操作が実行され、結果が個別に返され、CU が個別に消費されます。

多数の GetRow 操作の実行と比較した場合、BatchWriteRow 操作はリクエストへの応答時間を短縮し、データ読み取りを高速化することができます。

リクエスト構造:

message BatchWriteRowRequest {
    repeated TableInBatchWriteRowRequest tables = 1;
}
			
tables:
  • データ型:repeated TableInBatchWriteRowRequest

  • 必須 / 省略可能:必須

  • 書き込み操作を必要とする行の情報を指定します。

  • 次のいずれかの条件が発生すると、エラーが返されます。

    • tables のいずれかのテーブルが存在しない。

    • table に同じ名前のテーブルが含まれている。

    • tables にあるいずれかのテーブルの名前がテーブルの命名規則に準拠していない。

    • 主キーが tables にあるどの行にも指定されていない。または、主キー列名が規則に準拠していない。または、主キー列タイプに誤りがある。

    • tables の属性列の場合、列名が列の命名規則に準拠していない。

    • tables の行に、主キー列と同じ名前の属性列がある。

    • tables にある主キーまたは属性列の値が、制限項目を超過している。

    • tables にあるテーブルに同一の主キーを持つ行が含まれている。

    • テーブル内のすべての tables の行の総数が 200 以上あるか、または含まれているデータの合計サイズが 1M 以上ある。

    • tables にあるテーブルに行が含まれていない場合、OTSParameterInvalidException エラーが返されます。

    • tables にある PutRowInBatchWriteRowRequest に 1024 列以上含まれている。

    • tables にある UpdateRowInBatchWriteRowRequest にColumnUpdate オブジェクトが 1024 以上含まれている。

レスポンスメッセージの構造:

message BatchWriteRowResponse {
    repeated TableInBatchWriteRowResponse tables = 1;
}
			
tables :
  • データ型:TableInBatchWriteRowResponse

  • 各テーブルの操作に対応するレスポンス情報 (正常に実行されたか、エラーコード、消費された CU 等)

  • レスポンスメッセージの TableInBatchWriteRowResponse オブジェクトの順序は、BatchWriteRowRequest のTableInBatchWriteRowRequest オブジェクトの順序と同じです。 各 TableInBatchWriteRowRequest の put_rows 、update_rows 、delete_rows に含まれる RowInBatchWriteRowResponse オブジェクトの順序は、TableInBatchWriteRowRequest の put_rows 、update_rows、delete_rows に含まれる個々の PutRowInBatchWriteRowRequest、UpdateRowInBatchWriteRowRequest、DeleteRowInBatchWriteRowRequest オブジェクトの順序と同じです。

  • 行の読み取りに失敗した場合、RowInBatchWriteRowResponse の行の is_ok の値は false になります。

行レベルでは、BatchWriteRow 操作が部分的に失敗する場合があります。 この場合、200 の HTTP ステータスコードが返されますが、アプリケーションは RowInBatchWriteRowResponse のエラーの確認、各行の実行結果の精査、それに応じた後続処理をする必要があります。
CU 消費量:
  • 操作全体が失敗した場合、CU は消費されません。

  • リクエストのタイムアウトが発生し、結果が定義されていない場合、CU は消費される場合と消費されない場合があります。

  • その他の状況においては、書き込み CU の数値がカウントされる場合、PutRowInBatchWriteRowRequest、UpdateRowInBatchWriteRowRequestDelete、および RowInBatchWriteRowRequest の各操作は、個別の書き込み操作に対応します。 詳細については、PutRowUpdateRowDeleteRowをご参照ください。