Является ли DynamoDb UpdateExpression с ADD для увеличения счетчика транзакций? - PullRequest
0 голосов
/ 21 апреля 2020

Нужно ли использовать оптимистическую блокировку c при обновлении счетчика с ADD updateExpression, чтобы обеспечить подсчет всех приращений от всех клиентов?

https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html#API_UpdateItem_RequestSyntax

1 Ответ

1 голос
/ 22 апреля 2020

Я не уверен, что вы по-прежнему называете это транзакцией, если это единственное, что вы делаете в DynamoDB, это немного сбивает с толку терминологию.

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

Но, допустим, вы увеличиваете значения много раз в секунду, в результате чего вы действительно можете использовать емкость DynamoDB. предел. Рассмотрите возможность пакетирования приращений в потоке Kinesis, с помощью которого вы можете установить максимальное время ожидания потока при получении значения, которое должно начинаться с обработки. Это позволит вам достичь согласованности в течение x секунд в вашей агрегации.

Но кроме ситуаций с чрезвычайно высоким трафиком c у вас все будет хорошо, и в этом случае стандартный способ решения этой проблемы - использование потоков, которые очень экономичен, экономя единицы мощности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...