Прежде чем вы создадите GSI, чтобы упростить ваши запросы.Подумайте о хранении ваших данных в другом формате.
Например, сколько ресурсов вы ожидаете на одного арендатора?Не могли бы вы сохранить ваши данные в таком виде:
{
tenant: 123, //(partition)
resources: [
{ type: 'type1', role: 'role1', name: 'somename1'},
{ type: 'type2', role: 'role2', name: 'somename2'},
{ type: 'type3', role: 'role3', name: 'somename3'}
]
}
В указанном выше формате время чтения будет быстрым и масштабным.Затем вы можете отфильтровать свою логику в коде.Ваши записи DynamodB могут иметь размер 400 КБ, поэтому вы, вероятно, можете хранить несколько тысяч ресурсов в указанном выше формате для каждой записи.
Также обратите внимание, что каждый GSI имеет свое собственное использование для чтения / записи, которое используется при вставке вТаблица.Если вы используете подход GSI и много пишете в эту таблицу, у вас будет удивительно высокое использование записи.