Массовое добавление столбца TTL в таблицу DynamodB
У меня есть случай, когда мне нужно добавить столбец ttl в существующую таблицу. В настоящее время эта таблица содержит более 2 миллиардов записей.
Есть ли какое-либо существующее решение, построенное вокруг того же самого? Или должен быть путь вперед?
1 ответ
DynamoDB не поддерживает операции обновления, которые охватывают границу первичного ключа. А для чтения данных единственной операцией, которая выходит за границы раздела, является сканирование.
Так что, к сожалению, единственный способ добавить атрибут (DynamoDB - это база данных документов, поэтому нет такой концепции, как столбцы) для всех элементов в таблице - это фактически выполнить Put для каждого элемента.
Если в вашей таблице около 2 миллиардов записей, это будет 2 миллиарда записей.
Конечно, вы можете использовать EMR с Hive, чтобы подключиться к таблице и выполнить обновление в стиле SQL, чтобы добавить атрибут TTL, но он все равно преобразуется в 2 миллиарда отдельных запросов PutItem, поэтому его запуск займет некоторое время или будет достаточно дорогостоящим.,
Если причина, по которой вы хотите добавить TTL, заключается в том, что вы пытаетесь удалить значительное количество элементов в таблице, возможно, лучше было бы создать новую таблицу, скопировать нужные записи с помощью TTl и все, а затем удалите старую таблицу.
Он не поддерживается напрямую, но вам повезло, что недавно был опубликован этот пост в блоге AWS, в котором подробно рассматривается этот процесс.