DynamoDB - удалить из набора для элементов, основанных на неключевом условии - PullRequest
0 голосов
/ 11 мая 2018

У меня есть таблица со следующим форматом

  • Ключ хэша: строка
  • Области применения: набор [String]
  • Разрешения: Установить [Строка]

Давайте для простоты определим переменные:

  • val scopeCondition
  • valmissionsToDelete

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

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

1 Ответ

0 голосов
/ 12 мая 2018

При текущем дизайне схемы вам нужно отсканировать всю таблицу, чтобы найти записи, чьи Scopes удовлетворяют вашему scopeCondition, и операция сканирования является наименее рекомендуемой для извлечения записей из таблицы DynamoDB, поскольку это увеличит использованиеединиц считываемой емкости очень быстро с увеличением количества записей в таблице.

Вместо этого вам следует попытаться изменить структуру схемы в соответствии с типом запросов, которые необходимо выполнить для таблицы.

Как описано в Рекомендации DynamoDB , проектирование таблицы NoSQL начинается с вопросов, на которые должна отвечать ваша таблица, и на основе этих вопросов вы решаете, какое поле должно быть частью первичного ключа Hash / Range, чтополя можно использовать для определения глобальных вторичных индексов, чтобы можно было выполнять запросы с неключевыми полями таблицы.

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

...