#java #amazon-dynamodb #amazon-dynamodb-streams
Вопрос:
Поэтому я недавно добавил атрибут Time To Live в свою таблицу DynamoDB (850 миллионов записей). Я пытаюсь написать сценарий для заполнения атрибута Time To Live в моей таблице.
Я хочу получить все элементы в этой таблице без набора атрибутов Time To Live, чтобы я мог заполнить эти элементы временем жизни с помощью updateItem.
Есть ли способ сделать это в DynamoDB?
Ответ №1:
Если ваша база данных невелика, scan
будет работать простая:
var params = {
TableName: "<YOUR TABLE NAME>",
FilterExpression: "attribute_not_exists(time_to_live)"
};
var results = dynamodb.scan(params);
// update records here
Если ваша база данных большая, вы можете рассмотреть более продуманный подход, описанный AWS, который включает использование AWS EMR для заполнения данных в DynamoDB. Бонус, в связанной статье обсуждается время заполнения атрибутов для жизни в DynamoDB!
Комментарии:
1. Моя база данных большая (850 миллионов элементов), так будет ли это означать, что мне придется сканировать несколько раз?
2. Если ваша база данных настолько велика, я бы предложил следовать подходу, изложенному в сообщении в блоге AWS. Вы не хотите платить за чтение 850-миллиметровых элементов со сканированием!