DynamoDB - безопасны ли асинхронные / параллельные записи? - PullRequest
2 голосов
/ 10 марта 2019

В ситуации, когда я выполняю только запросы UPDATE (без получения), где я выполняю операции сложения, будет ли конечный результат защищен от состояния гонки?

Вот пример:

id: { num: 0 }

id: { num: 1 }

id: { num: 2 }

...

id: { num: 45 }

Скажем, что все эти операции обновления с updateexpression, который добавляет атрибут num, отправляется в DynamoDB, но асинхронно и без какого-либо понятия порядка, если бы они все еще благополучно выходили к соответствующему конечному значению серии (которое является1035)?

Что произойдет, если DynamoDB получит два запроса на обновление в одно и то же время?будет ли один запрос перезаписывать другой или будет правильно увеличиваться, если DynamoDB будет обновлять запрос по одному в конце по завершении атомарной операции?

Нужно ли мне беспокоиться о возникновении этого состояния гонки, или DynamoDB обрабатывает это?Что ж?

1 Ответ

2 голосов
/ 10 марта 2019

Да, операция UpdateItem может использоваться для реализации атомных счетчиков .Если вы только добавляете числа, порядок операций не имеет значения, нет условия гонки.

...