Для моей таблицы DynamoDB в настоящее время у меня есть такая схема:
Ключ раздела - уникальный идентификатор, поэтому каждый элемент имеет полностью уникальный идентификатор.
Ключ сортировки - нет
Атрибут - JSON, содержащий некоторые значения
Теперь я хочу добавить новое поле, которое потребуется для каждого элемента и будет указывать конкретный регион (например, NA-1, NA-2, JP-1 и т. Д.) И Я хочу иметь возможность делать запросы только в этом поле. Например, мне может потребоваться выполнить запрос к моей таблице, чтобы получить все элементы с регионом NA-1.
Мой вопрос: следует ли мне сделать это поле GSI? Я новичок в DynamoDB, поэтому изучаю онлайн, и мне кажется, что использование GSI предпочтительнее, когда это поле может присутствовать только для выбранных элементов в таблице, но мое поле будет требоваться для каждого элемента strong>, поэтому я думаю, что использование GSI - не вариант.
Другой возможный вариант, который я видел, - это выполнение операции сканирования и использование выражения фильтра, но, судя по тому, что я видел, это дорогостоящая операция, потому что DynamoDB должен просмотреть всю таблицу по частям, а затем отфильтровать. Моя таблица сейчас не очень большая, но в будущем она может стать довольно большой, поэтому мне нужен масштабируемый вариант.
TL; DR Могу ли я как-нибудь добавить обязательное поле regionID в свою таблицу и выполнять эффективные запросы к нему? Какие хорошие варианты мне следует рассмотреть?