Что содержит LastEvaluatedKey при использовании вторичных индексов в AWS DynamoDB?

Скажем, у меня есть таблица DynamoDB T с атрибутами H, R, G и S; H - ключ раздела / хеша, а R - ключ диапазона / сортировки. Скажем, у меня также есть глобальный вторичный индекс (GSI), который определяется ключом раздела как G и ключом сортировки как S.

Какие атрибуты следует ожидать в LastEvaluatedKey, когда запрос выполняется с использованием GSI с разбивкой на страницы? Я прочитал документацию, но в ней нет этой детали.


person Nitin Yadav    schedule 13.07.2020    source источник
comment
Почему бы тебе не проверить это самому?   -  person jellycsc    schedule 14.07.2020


Ответы (2)


Он вернется

{
  "G": "foo",
  "S": "bar"
}

В GSI не гарантируется, что этот ключ будет уникальным, так что имейте это в виду.

person tleef    schedule 14.07.2020
comment
Если ключи не уникальны, есть ли способ разбивки на страницы? Я имел в виду, что, поскольку gsi не уникален, мы можем получить те же значения ключей, что и lastEvaluatedKey, так как же нам с этим поступить? - person Vishnu; 01.09.2020

Похоже, LastEvaluatedKey будет включать все четыре (H, R, G и S), когда запрос выполняется на GSI. Следующее кажется правилом:

Если мы запрашиваем GSI, то LastEvaluatedKey будет состоять из ключа раздела GSI, ключа сортировки GSI, ключа первичного раздела и ключа первичной сортировки.

Если мы запрашиваем LSI, то LastEvaluatedKey будет представлять собой ключ сортировки LSI, ключ первичного раздела и первичный ключ сортировки.

person Nitin Yadav    schedule 03.08.2020
comment
Если ключи не уникальны, есть ли способ разбивки на страницы? Я имел в виду, что поскольку gsi не уникален, мы можем получить те же значения ключей, что и lastEvaluatedKey, так как же нам продолжить? - person Vishnu; 01.09.2020
comment
@Vishnu LastEvaluatedKey всегда включает ключи, которые могут однозначно идентифицировать строку - person Nitin Yadav; 07.09.2020