Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to support transactions in dynamoDB with javascript aws-sdk?

We have a microservice written in node.js & we use dynamoDB for data storage. Value is stored in json format against key. In update service call, we fetch value for a key, update the json & save it.

Recently, we came across a condition where 2 calls wanted to update the value of the same key. So first call read the value, then second call read the value, first call updated & saved, then second updated & saved the value (usual case of race condition), so in this case update by first call did not get reflected in DB.

To handle this, I researched a bit & came to know about the transaction library of dynamoDB. But it seems that it is not yet in node-js sdk.

Also, I searched about versioning & optimistic locking but again I did not find a support for this in node-js sdk.

Is there any update with this? If it's support is not going to come in near future in node-js sdk, what are the other options? What could be the best way to handle this issue?

like image 356
ameykpatil Avatar asked Feb 04 '16 09:02

ameykpatil


1 Answers

  1. You can do atomic updates such as incrementing a number straight on Dynamo without reading, incrementing, updating. For more information see this

  2. Are both updates updating the same field? If so you can add a condition to the update that the old value equal what you read. That way if you try to save the 2nd new value, this condition will fail and it won't perform the 2nd update. See this

like image 148
Max Avatar answered Nov 06 '22 16:11

Max