Есть ли способ получить все элементы без атрибута в DynamoDB?

#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-миллиметровых элементов со сканированием!