Запрос DynamoDB по полям без разделов - PullRequest
0 голосов
/ 16 января 2020

Учитывая таблицу DynamoDB, которая выглядит примерно так:

sessionId: String
deviceType: String (mobile/tablet/computer/...)
networkType: String (wifi/ethernet/3g/4g/...)

Могут быть некоторые другие поля. Мне нужно иметь возможность искать идентификатор сессии с учетом других параметров. SQLi sh:

  • ВЫБРАТЬ идентификатор сессии, ГДЕ deviceType = "Мобильный"
  • ВЫБРАТЬ идентификатор сессии, ГДЕ сетевой тип в (wifi, ethe rnet) И deviceType = "Планшет"

Но из того, что я понимаю, для запросов в DynamoDB всегда требуется ключ раздела (sessionId).

Существует ли альтернативный макет этой таблицы, который позволит улучшить запросы? Мы все еще находимся в стадии настройки, поэтому ее можно изменить.

1 Ответ

1 голос
/ 16 января 2020

Чтобы быть эффективным и экономически эффективным, я предлагаю вам создать 2 глобальных вторичных индекса (GSI). PK будет "deviceType" и "networkType". Для СК и у меня недостаточно информации, чтобы что-то предлагать. Следовательно, нет необходимости проецировать все атрибуты, потому что вы хотите получить только sessionId, который проецируется по умолчанию, потому что это PK.

Для суммирования модели данных:

         PK              Attributes
Table:   sessionId       deviceType, networkType, ...
GSI_1:   deviceType      sessionId, networkType, ...
GSI_2:   networkType     sessionId, deviceType, ...

Например, при запросе GSI_1 вы будете использовать PK = "Mobile", например, для получения всех связанных sessionId.

Этот способ действительно быстрый и экономически эффективный, как и сканирование.

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