Найдите количество объектов внутри элемента таблицы DynomoDB с помощью функции Lamda (Python/Node)

Я новичок в мире AWS, и мне нужно найти количество данных из таблицы DynamoDB. У меня такая структура таблицы.

  1. Он имеет 2 элемента (столбцы в MySQL), например, A и B
  2. A - хранит идентификаторы пользователей (ключ первичного раздела).
  3. B - хранит профили пользователей, количество профилей, связанных с UserID.
  4. Предположим, что A содержит идентификатор пользователя 3435 и 3 профиля ({"21btet3","3sd4","adf11"}). Мое требование - получить счетчик 3 на выходе в виде JSON в формате:

Как настроить параметры проверки этого запроса? Кто-нибудь может помочь?

2 ответа

вам не следует выполнять полное сканирование таблицы на регулярной основе.

Если вам необходимо часто получать этот счетчик, вам следует подписать лямбда-функцию на потоки Dynamodb и обновлять счетчик по мере добавления новых записей в Dynamodb. Это обеспечит

  1. ты платишь меньше

  2. Вам не нужно будет сканировать таблицу, чтобы вычислить это число.

DynamoDb - это NoSQL, поэтому есть некоторые ограничения при запросе данных. В вашем случае вам нужно отсканировать всю таблицу, как показано ниже

def ScanDynamoData(lastEvalutedKey):
    table =  boto3.resource("dynamodb", "eu-west-1").Table('TableName') #Add your region and table name
    if lastEvalutedKey:
        return table.scan(
            ExclusiveStartKey=lastEvalutedKey
        )
    else:
        return table.scan()

И вызывайте этот метод в цикле до тех пор, пока lastEvalutedKey не станет равным нулю (для сканирования всех записей), например

response = ScanDynamoData(None);
totalUserIds = response["Count"] 
#In response you will get the json of entire table you can count userid and profiles here

while "LastEvaluatedKey" in response:
        response = ScanDynamoData(response["LastEvaluatedKey"])
        totalUserIds += response["Count"]
        #Add counts here also
Другие вопросы по тегам