запрос Dynamodb для выбора всех элементов, соответствующих набору значений

В динамо-таблице я хотел бы запросить, выбрав все элементы, значение атрибутов которых соответствует одному из набора значений. Например, в моей таблице есть атрибут current_status, поэтому я хотел бы, чтобы все элементы имели значение «NEW» или «ASSIGNED». Если я применяю GSI к атрибуту current_status, похоже, мне нужно сделать это в двух запросах? Или вместо этого сделать сканирование?


person user1584120    schedule 15.04.2019    source источник


Ответы (1)


DynamoDB не рекомендует использовать сканирование. Используйте его только тогда, когда другого варианта нет и у вас достаточно небольшой объем данных.

Здесь вам нужно использовать GSI. Включение current_status в PK GSI приведет к проблеме с горячим разделом.

Правильное решение - поместить случайное число в PK GSI в диапазоне от 0 до N, где N - количество разделов. И укажите статус GSI в SK вместе с отметкой времени или некоторой уникальной информацией, чтобы пара PK-SK оставалась уникальной. Поэтому, если вы хотите запросить на основе current_status, выполняйте N запросов параллельно с PK в диапазоне от 0 до N, а SK начинается с current_status. N следует выбирать в зависимости от количества имеющихся у вас данных. Если размер данных в каждой строке меньше 4 КБ, то эта операция параллельного запроса потребует N единиц чтения без проблем с горячим разделом. Ссылка ниже предоставляет подробную информацию об этом

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-indexes-gsi-sharding.html https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-modeling-nosql-B.html

person Sumeet P    schedule 16.04.2019