Я не уверен, что вы по-прежнему называете это транзакцией, если это единственное, что вы делаете в DynamoDB, это немного сбивает с толку терминологию.
IMO, правильнее сказать это Atomic
. Вы можете объединить приращение с другими изменениями в DynamoDB с условием, которое будет означать, что оно не будет записано, если только это условие не истинно, но если ваше единственное изменение - это приращение, то кроме ограничения емкости не будет другой причины. (кроме астероида в центре обработки данных или чего-то подобного), почему ваш прирост не удался. (Если вы не ставите условие по вашему запросу, которое оказывается ложным при написании). Если у вас одновременно увеличиваются два клиента, DynamoDB будет обрабатывать то, что кто-то получит первым.
Но, допустим, вы увеличиваете значения много раз в секунду, в результате чего вы действительно можете использовать емкость DynamoDB. предел. Рассмотрите возможность пакетирования приращений в потоке Kinesis, с помощью которого вы можете установить максимальное время ожидания потока при получении значения, которое должно начинаться с обработки. Это позволит вам достичь согласованности в течение x секунд в вашей агрегации.
Но кроме ситуаций с чрезвычайно высоким трафиком c у вас все будет хорошо, и в этом случае стандартный способ решения этой проблемы - использование потоков, которые очень экономичен, экономя единицы мощности.