2016-08-05 5 views
0

とbatchWriteItem私はidキーとvalue同じパーティションキー

キーソートパーティションでDynamoDBのテーブルを持っている今、私は同じパーティションキーと別の種類のキーで複数の項目を挿入するためにbatchWriteItemを実行したいが、それ最後の項目挿入:挿入されます3値でこのコードのみアイテムに

$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'), 
        ]], 

      ], 
     ], 

    ], 
]); 

"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をやっ間の任意のperformenceの違いはありますか?

答えて

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

参照リンクを確認しましたか? –

関連する問題