бывают случаи, когда несколько инстансов этой лямбды пытаются записать в один и тот же айтем, в результате один из инстансов перетирает результат другого. Насколько я понимаю, это называется Concurrent Writes. Вопрос, как лучше сделать:
1. Добавить conditional write с backoff-ом
2. Переписать все на transactional dynamo api
3. Либо вообще ограничить количество параллельных экзеьюшенов у лямбды = 1
?
Самое простое это количество экземпляров уменьшить
понял. И ещё - я правильно понимаю, что пункт 2 здесь избыточен? Я так понимаю, что это лучше делать когда есть несколько таблиц и нужно все транзакции сохранить вместе?
Это по факту транзакции как в sql если правильно помню
Это несколько записей в одну или разные таблицы, если одна ловит исключение, все записи откатываются
можно добавить поле таймстампа как range key и просто писать в разные записи а забирать последнюю. Чтобы данные не накапливались можно и TTL поле сделать - чтобы автоматом чистилась таблица
скорее всего так не получится, поскольку они редактируют один и тот же аттрибут. т.е. ожидается, что эти две операции должны быть выполнены последовательно, но в целом без разницы в какой последовательности
а это не транзакция в классическом понимание разве)? в sql ровно так же)
Я крепенько щас подумал, и ты в принципе прав
Ну а принцип один и тот же в транзакционных системах
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html
Обсуждают сегодня