すべてのプロダクト
Search
ドキュメントセンター

Tablestore:BatchWriteRow

最終更新日:Dec 28, 2024

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

BatchWriteRow 操作は、PutRow、UpdateRow、または DeleteRow 操作のセットです。 BatchWriteRow 操作を呼び出すと、各 PutRow、UpdateRow、または DeleteRow 操作は個別に実行され、各 PutRow、UpdateRow、または DeleteRow 操作への応答は個別に返され、消費ユニット (CU) は各 PutRow、UpdateRow、または DeleteRow 操作に対して個別に計算されます。

PutRow、UpdateRow、または DeleteRow 操作を複数回呼び出す代わりに BacthWriteRow 操作を呼び出すと、応答時間が短縮され、データ書き込みパフォーマンスが向上します。

リクエスト構文

message BatchWriteRowRequest {
    repeated TableInBatchWriteRowRequest tables = 1;
    optional string transaction_id = 2;
    optional bool is_atomic = 3;
}        

パラメーター

タイプ

必須

説明

tables

TableInBatchWriteRowRequest

はい

バッチ書き込み操作を実行する行。

以下のいずれかの状況が存在する場合、エラーが返されます。

  • 指定されたテーブルが存在しません。

  • 同じ名前のテーブルが指定されています。

  • 指定されたテーブルの名前が命名規則に準拠していません。 詳細については、命名規則とデータ型 を参照してください。

  • プライマリキーが指定されていないか、プライマリキー列の名前が命名規則に準拠していないか、プライマリキー列のタイプが指定された行に対して無効です。

  • 指定された行の属性列の名前が命名規則に準拠していません。 詳細については、命名規則とデータ型 を参照してください。

  • 指定された行の属性列の名前が、その行のプライマリキー列の名前と同じです。

  • 指定された行のプライマリキー列または属性列の値が、サイズの上限を超えています。 詳細については、一般的な制限 を参照してください。

  • プライマリキーが同じ行が、指定されたテーブルに存在します。

  • 指定された行の合計数が 200 を超えているか、指定された行のデータの合計サイズが 4 MB を超えています。

  • 指定されたテーブルに操作を実行する行が含まれていない場合、OTSParameterInvalidException エラーが返されます。

  • 指定されたテーブルの PutRowInBatchWriteRowRequest メソッドに含まれる列の数が 1,024 を超えています。

  • 指定されたテーブルの UpdateRowInBatchWriteRowRequest メソッドの ColumnUpdate パラメーターで指定された列の数が 1,024 を超えています。

transaction_id

string

いいえ

ローカルトランザクションの ID。 ローカルトランザクション機能を使用してデータをバッチ書き込みする場合、このパラメーターは必須です。

is_atomic

bool

いいえ

バッチ書き込み操作をアトミック操作として実行するかどうかを指定します。

レスポンス構文

説明

BatchWriteRow 操作は、行レベルで部分的に失敗することがあります。 ただし、操作は引き続き HTTP 200 ステータスコードを返します。 アプリケーションは、RowInBatchWriteRowResponse のエラーをチェックして、各行の実行結果を確認し、それに応じて処理する必要があります。

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 になります。

TableStore SDK の使用

以下の TableStore SDK を使用して、1 つ以上のテーブルから複数のデータ行を同時に挿入、変更、または削除できます。

CU 消費量

  • 操作が失敗した場合、CU は消費されません。

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

  • その他のシナリオでは、各 PutRowInBatchWriteRowRequest、UpdateRowInBatchWriteRowRequest、または DeleteRowInBatchWriteRowRequest メソッドは、CU が個別に計算される PutRow、UpdateRow、または DeleteRow 操作と見なされます。 詳細については、PutRowUpdateRow、および DeleteRow を参照してください。