2016-08-05 82 views
0

我有一個dynamodb表分區鍵id和排序鍵valuebatchWriteItem具有相同分區鍵

現在我想運行batchWriteItem插入使用相同的分區鍵和不同的排序關鍵字,但多個項目只是插入了最後一個項目:

$response = $dynamoDb->batchWriteItem([ 
    'RequestItems' => [ 
     'mytable' => [ 
      [ 
       'PutRequest' => [ 
        'Item' => [ 
         'id' => array('S' => '123abc'), 
         'value' => array('N' => '1'), 
        ], 
        'Item' => [ 
         'id' => array('S' => '123abc'), 
         'value' => array('N' => '2'), 
        ], 
        'Item' => [ 
         'id' => array('S' => '123abc'), 
         'value' => array('N' => '3'), 
        ]], 

      ], 
     ], 

    ], 
]); 

有了這個代碼僅將項目與3被插入的值

"Items": [ 
     { 
      "id": { 
       "S": "123abc" 
      }, 
      "value": { 
       "N": "3" 
      } 
     } 
    ], 

代碼有什麼問題或者我沒有考慮的東西?

它做單請求時,完美的作品:

$response = $dynamoDb->putItem(array(
    'TableName' => 'mytable', 
    'Item' => array(
     'id' => array('S' => '123abc'), 
     'value' => array('N' => '1'), 
    ), 
)); 

$response = $dynamoDb->putItem(array(
    'TableName' => 'mytable', 
    'Item' => array(
     'id' => array('S' => '123abc'), 
     'value' => array('N' => '2'), 
    ), 
)); 

$response = $dynamoDb->putItem(array(
    'TableName' => 'mytable', 
    'Item' => array(
     'id' => array('S' => '123abc'), 
     'value' => array('N' => '3'), 
    ), 
)); 

batchWriteItem或順序做3個單putItem reuests之間的任何性能自動區別?

回答

1

您正在使用不正確的語法batchWrite,試試以下

$response = $dynamoDb->batchWriteItem([ 
    'RequestItems' => [ 
     'mytable' => [ 
      [ 
       'PutRequest' => [ 
        'Item' => [ 
         'id' => array('S' => '123abc'), 
         'value' => array('N' => '1'), 
        ] 
        ], 
        'PutRequest' => [ ///Entire PutRequest array need to be repeated not just item array/// 
         'Item' => [ 
         'id' => array('S' => '123abc'), 
         'value' => array('N' => '2'), 
        ] 
        ], 
      ], 
     ], 

    ], 
]); 

除此之外,單刀片和多刀片之間的差異將與DynamoDB接通電話,在batchPut你會發送整個數組一次,而在單次插入時,每次嘗試執行任何操作時都會連接到DB。

通常,您可以使用批處理來更快地處理事物。

這裏是refernce link for batchWrite syntax

希望有所幫助。

+0

我試着用你的語法,它只會插入值爲2的行,值爲1的行會被忽略。 – maddo7

+0

您是否檢查了參考鏈接 –

相關問題