Изменение типа проекции LSI во время выполнения - PullRequest
0 голосов
/ 30 октября 2019

Я делаю выражение запроса для динамо-базы данных на основе LSI, и тип проекции для LSI установлен как INCLUDE. Как я могу изменить проекцию LSI на INCLUDE ALL во время выполнения? Я вижу, что projectionExpression можно изменить, но возможно ли это. Если да, пожалуйста, дайте мне знать

Projection projection = new Projection().withProjectionType(ProjectionType.ALL);

queryExpression.setProjectionExpression()

1 Ответ

1 голос
/ 30 октября 2019

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

Индексы в динамо - это просто копии ваших данных, вставленные в другой ключ. Динамо управляет этим дублированием негласно и синхронизирует ваши индексы и основную таблицу.

Вам нужно будет заново создать вашу таблицу с БИС, которая проецирует ВСЕ . Я полагаю, что используемый вами проекционный API предназначен для проецирования ALL, но может потребоваться вернуть подмножество ALL.

Проекция - это набор атрибутов, которые копируются из таблицы ввторичный индекс. Ключ раздела и ключ сортировки таблицы всегда проецируются в индекс;Вы можете проецировать другие атрибуты для поддержки требований вашего приложения. Когда вы запрашиваете индекс, Amazon DynamoDB может получить доступ к любому атрибуту в проекции, как если бы эти атрибуты были в собственной таблице.

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...