Выберите первичный индекс для Глобального вторичного индекса - PullRequest
0 голосов
/ 12 июня 2019

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

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

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

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

1 Ответ

2 голосов
/ 12 июня 2019

Да, это именно то, что это значит. Предположим, у вас есть таблица с составным первичным ключом, который состоит из 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.

...