GSI с DynamoDB.DocumentElement и Node.JS

У меня вопрос по GSI. Вопрос довольно простой для людей, которые работают с DynamoDB :)

В настоящее время я изучаю AWS / DynamoDB, создавая блог. Таким образом, каждый пост получил одну категорию. У меня есть одна большая проблема, если я хочу получить все сообщения, которые попали в особую категорию. Сейчас использую сканирование и содержит фильтр.

РЕДАКТИРОВАТЬ: для создания моделей я использую Dynamodb-toolbox

Я слышал, что могу применить GSI и получить все сообщения с категорией, выполнив поиск с помощью GSI. Самая большая проблема ... Я не знаю, как мне создать GSI, как я могу использовать его в запросах DocumentClient и node.js

Спасибо за помощь!


person Restir    schedule 09.05.2020    source источник
comment
Как в настоящее время выглядит ваша модель данных DynamoDB?   -  person tugberk    schedule 09.05.2020
comment
`schema: {pk: {type: 'string', alias: 'type', default: 'POST'}, sk: {type: 'string', alias: 'id'}, title: {type: 'string' }, category: {type: 'string'}, description: {type: 'string'},} `это модель из динамо-инструментария, поэтому каждый пост получил эти поля   -  person Restir    schedule 09.05.2020


Ответы (1)


Я не знаю, как мне создать GSI

Это в документации, более конкретно доступно здесь.

У меня есть одна большая проблема, если я хочу получить все сообщения, которые попали в особую категорию. Сейчас использую сканирование и содержит фильтр.

В этом случае и на основе вашей модели данных в настоящее время вам необходимо настроить GSI, где category является ключом раздела, а id - ключом сортировки, где вам необходимо настроить первичный ключ как составной первичный ключ для PK и SK, как описано здесь.

Это позволит вам запрашивать данные по категориям на этом GSI, поскольку у вас есть категория в качестве ключа раздела, при выполнении запроса вы попадете в один раздел.

как я могу использовать его в ширине запроса DocumentClient и node.js

Я предлагаю вам сначала разобраться с этим и заставить его работать изолированно, не беспокоясь об ограничениях вашего языка программирования. Как только вы справитесь с этим, вы можете отдельно беспокоиться о проблемах языка программирования.

person tugberk    schedule 09.05.2020
comment
Хорошо, спасибо за помощь! Это было действительно полезно для меня. Все, что я хочу спросить, - можно ли создать этот индекс с помощью кода? Или мне следует перейти непосредственно к таблице DynamoDB в AWS-CLI и создать ее самостоятельно? - person Restir; 09.05.2020
comment
Можно ли создать этот индекс с помощью кода: вы можете, все, что вы можете сделать в консоли AWS, что вы можете в значительной степени сделать в своем собственном коде, через интерфейс командной строки AWS и вашу инфраструктуру в качестве инструментов кода (например, terraform). Создание GSI - это то, что вам нужно сделать один раз по мере необходимости. Итак, я бы вынул его из приложения и запустил в другом месте. - person tugberk; 09.05.2020