edit-icon download-icon

BatchWriteRow

最終更新日: May 05, 2018

アクション

BatchWriteRow は、1 つまたは複数のテーブルに複数のデータ行を挿入、変更、または削除します。基本的に、複数の PutRowUpdateRowDeleteRow操作のセットです。各操作は実行され、独立して結果を返し、独立して容量単位を消費します。

大量の書き込み操作の実行と比較すると、BatchWriteRow操作の使用が削減できるリクエスト応答時間を、データ書き込み速度を向上させます。

リクエストの構造:

  1. message BatchWriteRowRequest {
  2. repeated TableInBatchWriteRowRequest tables = 1;
  3. }

tables

  • 型: 繰り返し TableInBatchWriteRowRequest

  • 必須パラメーター: はい

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

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

    • tables にはテーブルが存在しない。

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

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

    • tables のいずれかの行に対してプライマリキーが指定されていない、プライマリキー列名が規則に準拠していない、またはプライマリキー列の型が正しくない。

    • tables のいずれかの属性列は列の命名規則に準拠していない。

    • tables のいずれかの行に、プライマリキー列と同じ名前の属性列が含まれている。

    • tables のいずれかのテーブルに同一のプライマリキーを持つ行が含まれている。

    • tables のすべてのテーブルの行の合計数が 200 を超えているか、含まれているデータの合計サイズが 1 M を超えている。

    • tables のいずれかのテーブルに行がない場合、OTSParameterInvalidException エラーが返される。

    • tables の PutRowInBatchWriteRowRequest に 1024 列を超える列が含まれている。

    • tables の UpdateRowInBatchWriteRowRequest に 1024 を超える ColumnUpdate オブジェクトが含まれている。

応答メッセージの構造:

  1. message BatchWriteRowResponse {
  2. repeated TableInBatchWriteRowResponse tables = 1;
  3. }

tables

  • 型: TableInBatchWriteRowResponse

  • 実行が成功したかどうか、エラーコード、消費された容量単位など、各テーブルの操作に対応する応答情報。

  • 応答メッセージ内の 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 操作が部分的に失敗することがあります。この場合も、HTTP ステータスコード 200 が返されますが、アプリケーションは RowInBatchWriteRowResponse のエラーをチェックして各行の実行結果を確認し、それに従って処理を続行する必要があります。

容量単位の消費:

  • 操作全体が失敗した場合、容量単位は消費されません。

  • リクエストタイムアウトが発生し、結果が定義されていない場合は、容量単位が消費される場合とされない場合、どちらもありえます。

  • その他の状況では、書き込み容量単位の数がカウントされると、PutRowInBatchWriteRowRequest、UpdateRowInBatchWriteRowRequestDelete、RowInBatchWriteRowRequest の操作ごとに対応する書き込み操作として表示されます。

リクエストの例:

  1. BatchWriteRowRequest {
  2. tables {
  3. table_name: "consume_history"
  4. put_rows {
  5. condition {
  6. row_existence: IGNORE
  7. }
  8. primary_key {
  9. name: "CardID"
  10. value {
  11. type: STRING
  12. v_string: "2007035023"
  13. }
  14. }
  15. primary_key {
  16. name: "SellerID"
  17. value {
  18. type: STRING
  19. v_string: "00022"
  20. }
  21. }
  22. primary_key {
  23. name: "DeviceID"
  24. value {
  25. type: STRING
  26. v_string: "061104"
  27. }
  28. }
  29. primary_key {
  30. name: "OrderNumber"
  31. value {
  32. type: INTEGER
  33. v_int: 142857
  34. }
  35. }
  36. attribute_columns {
  37. name: "Amount"
  38. value {
  39. type: DOUBLE
  40. v_double: 2.5
  41. }
  42. }
  43. attribute_columns {
  44. name: "Remarks"
  45. value {
  46. type: STRING
  47. v_string: "ice cream"
  48. }
  49. }
  50. }
  51. update_rows {
  52. condition {
  53. row_existence: EXPECT_EXIST
  54. }
  55. primary_key {
  56. name: "CardID"
  57. value {
  58. type: STRING
  59. v_string: "2007035023"
  60. }
  61. }
  62. primary_key {
  63. name: "SellerID"
  64. value {
  65. type: STRING
  66. v_string: "00026"
  67. }
  68. }
  69. primary_key {
  70. name: "DeviceID"
  71. value {
  72. type: STRING
  73. v_string: "065499"
  74. }
  75. }
  76. primary_key {
  77. name: "OrderNumber"
  78. value {
  79. type: INTEGER
  80. v_int: 153846
  81. }
  82. }
  83. attribute_columns {
  84. type: PUT
  85. name: "Amount"
  86. value {
  87. type: DOUBLE
  88. v_double: 1
  89. }
  90. }
  91. attribute_columns {
  92. type: DELETE
  93. name: "Remarks"
  94. }
  95. }
  96. delete_rows {
  97. condition {
  98. row_existence: IGNORE
  99. }
  100. primary_key {
  101. name: "CardID"
  102. value {
  103. type: STRING
  104. v_string: "2007035023"
  105. }
  106. }
  107. primary_key {
  108. name: "SellerID"
  109. value {
  110. type: STRING
  111. v_string: "00026"
  112. }
  113. }
  114. primary_key {
  115. name: "DeviceID"
  116. value {
  117. type: STRING
  118. v_string: "065499"
  119. }
  120. }
  121. primary_key {
  122. name: "OrderNumber"
  123. value {
  124. type: INTEGER
  125. v_int: 166666
  126. }
  127. }
  128. }
  129. }
  130. }

応答の例:

  1. tables {
  2. table_name: "consume_history"
  3. put_rows {
  4. is_ok: true
  5. consumed {
  6. capacity_unit {
  7. write: 1
  8. }
  9. }
  10. }
  11. update_rows {
  12. consumed {
  13. capacity_unit {
  14. write: 1
  15. }
  16. }
  17. }
  18. delete_rows {
  19. consumed {
  20. capacity_unit {
  21. write: 1
  22. }
  23. }
  24. }
  25. }