Выберите первичный индекс для глобального вторичного индекса

Я читаю документацию AWS о вторичных индексах и не понимаю следующего утверждения:

Ключ индекса не обязательно должен иметь какие-либо ключевые атрибуты из таблицы.

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

Я хотел бы убедиться, что я понимаю приведенное выше утверждение, означает ли это именно то, что я могу создать первичный ключ или ключ сортировки для атрибута, который отличается от первичного / хэш-ключа текущей таблицы?


person SyndicatorBBB    schedule 12.06.2019    source источник


Ответы (1)


Да, именно это и означает. Предположим, у вас есть таблица с составным первичным ключом, который состоит из bundle_id в качестве ключа раздела и item_id в качестве ключа сортировки. Предположим, у вас также есть в этой таблице атрибут с именем client_id.

Затем вы можете создать GSI, назовем его client_id-index с client_id в качестве ключа раздела, и вы также можете включить некоторые другие атрибуты в GSI.

Затем вы можете запросить GSI следующим образом (пример кода с использованием Python и Boto3)

table.query(
    IndexName='client_id-index',
    KeyConditionExpression=Key('client_id').eq("123456")
)

Обратите внимание, что даже если вы укажете ProjectionType как INCLUDE в вашем GSI и включите некоторые неключевые атрибуты, ключевые атрибуты из таблицы также будут включены в ваш GSI.

person Tommy    schedule 12.06.2019
comment
Отличный ответ, очень хорошо объясненный. Спасибо! - person SyndicatorBBB; 12.06.2019
comment
@SyndicatorBBB рад помочь! :) - person Tommy; 12.06.2019