Мы разрабатываем приложение, которое будет использовать DynamoDB в качестве системы хранения.
Мы определили различные шаблоны доступа и, просмотрев документацию по глобальным вторичным индексам, застряли при принятии решения о том, какой подход использовать: Индекс перегрузка или наличие 2 разреженных индексов.
Чтобы дать больше контекста, наше приложение хранит заказы, у нас могут быть внутренние или внешние заказы. Исходя из этого, они будут связаны с клиентом или складом:

Так как мы хотели бы искать по клиенту и / или складу, мы думали о 2 решениях.
Первое решение - сохранить указанную выше структуру данных и создать 2 индекса:
- GSI1 - Заказчик (PK)
- GSI2 - Склад (PK)
Вторым решением является перегрузка другого столбца, например:

Таким образом, требуется только 1 индекс: Назначение ( PK) и запрашивается применяется с префиксом.
Вопрос: «Есть ли какая-то польза от перегрузки индекса по сравнению с наличием двух разных разреженных глобальных вторичных индексов?» (Экономия затрат по пропускной способности, транспортировке данных, времени запросов, сложности данных ...)