Согласно https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughput.html,
UpdateItem - изменяет один элемент в таблице. DynamoDB учитывает размер элемента так, как он выглядит до и после обновления. Предоставленная пропускная способность отражает больший размер этих элементов. Даже если вы обновите только подмножество атрибутов элемента, UpdateItem по-прежнему будет использовать полную пропускную способность (большую из размеров элементов «до» и «после»).
Таким образом, хотя ваш сценарий будет только go добавлять один маленький столбец TTL к каждому элементу, стоимость этой операции в WCU будет идентична переписыванию всей базы данных. Если вы используете режим выставления счетов по требованию, эти затраты могут быть огромными, и вы обязательно должны их учитывать.
Однако, если вы используете режим выставления счетов за предоставленную мощность, стоимость может быть более управляемой: Вы, вероятно, работаете с меньшей емкостью, поэтому можете добавить дополнительные операции записи бесплатно. Однако возникает вопрос: сколько у вас дополнительных мощностей: если у вас просто 1000 запросов в секунду, то вам потребуется целый месяц, чтобы написать TTL для 3 миллиардов элементов с такой скоростью. В любом случае, если вы используете выделенную емкость, ваш сценарий должен будет тщательно контролировать поток: он должен работать со скоростью N обновлений в секунду, медленно увеличивая N, но как только он получит ошибку о переполненной емкости, оно должно быть меньше N. Если вы не выполняете такое управление потоком, вы можете в конечном итоге задушить ваше реальное живое приложение.
Наконец, еще один вопрос, на который вам нужно ответить: как вы узнаете, какие элементы существуют? , чтобы добавить к ним поля TTL. Если у вас нет каких-либо внешних знаний о том, какие ключи существуют, вам, к сожалению, нужно «отсканировать» всю таблицу, чтобы выяснить существующие ключи. Вы можете попросить Scan вернуть только ключи, а не полные элементы, но это все равно будет стоить вам столько же, сколько и чтение всего элемента (но это уменьшит пропускную способность сети). К счастью, чтение в DynamoDB намного дешевле, чем запись. Кроме того, опять же, если вы используете выделенную емкость, вы можете медленно выполнять это сканирование бесплатно по сравнению с существующей избыточной емкостью.