Понятно, что Dynamo не является потокобезопасным при параллельном выполнении обновлений/удалений (если только не используется оптимистическая блокировка обновлений или условная запись).
Что мне интересно, существует ли риск возникновения проблем с согласованностью при запуске обновлений одно за другим без какой-либо паузы последовательно, что-то вроде этого (Javascript):
await dynamo
.put({ // PUT creates a record if it doesn't exist
TableName: "table-name",
Item: {
id,
value: "some value"
}
})
.promise();
await dynamo
.delete({
TableName: "table-name",
Key: {
id
}
})
.promise();
// wait for X seconds for eventual consistency here
const result = await dynamo
.get({
TableName: "table-name",
Key: {
id
}
})
.promise();
if (result.Item) {
throw new Error('Oh no, record should have been deleted!');
}
Я запускал этот код 1000 раз, и результаты показывают, что в этом случае можно полагаться на то, что Dynamo будет вести себя так, как ожидалось (выигрывает последнее обновление/удаление), но я хотел бы быть уверенным (ссылка на документы?).
Обновление: другими словами, я хотел бы знать, гарантирует ли Dynamo соблюдение порядка, в котором я отправляю обновления, когда обновления происходят быстро.