Как уменьшить время запроса DynamoDB

Я настраиваю DynamoDB. Наши данные просты, в них четыре поля:

  1. Имя пользователя
  2. UserShiftEndDate
  3. UserProjectCode
  4. UserActivities

В идеале мы должны запрашивать пользователей на основе UserShiftEndDate. Ни одно из полей / комбинаций в наших данных не является уникальным. Я могу добавить автоматически сгенерированный идентификатор для каждой записи.

Пожалуйста, предложите мне, какие поля выбрать в качестве ключа раздела и ключа сортировки или GSI для оптимального времени ответа на запрос на основе UserShiftEndDate.

В качестве примера рассмотрим приведенную ниже таблицу:

UserName UserShiftEndDate UserProjectCode UserActivities
UserA 12/13/2020 45 monitoring
UserB 12/14/2020 47 testing
Userc 12/17/2020 45 monitoring
UserB 12/14/2020 45 testing
UserC 12/15/2020 47 managing

Мой запрос должен принимать дату в качестве входных данных и должен возвращать все данные пользователей с shiftEndDate позже или равными заданной дате.

Например, если в качестве входных данных задано 12/14/2020, то запрос должен возвращать все пользовательские данные, кроме строки 1.

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


comment
Привет, NewBee, не могли бы вы дать нам больше информации о том, что вы хотите запросить, может быть, с примером? Вы хотите найти одного пользователя или всех пользователей, у которых закончилась смена одновременно? Stackoverflow теперь поддерживает таблицы, что должно помочь вам создать демонстрационную таблицу здесь.   -  person Jens    schedule 15.12.2020
comment
@Jens, Спасибо за ответ, я отредактировал свой вопрос. Надеюсь, теперь вопрос яснее.   -  person NewBee    schedule 15.12.2020


Ответы (1)


Я бы рекомендовал создать UUID (сгенерированный программно) в качестве первичного ключа, а затем GSI с UserShiftEndDate. Чтобы вы могли указать дату и получить все записи с указанной датой. Дополнительную информацию см. В этой статье.

person CruncherBigData    schedule 20.12.2020
comment
Спасибо за ваш ответ, но я думаю, что GSI с UserShiftEndDate здесь невозможен, поскольку я хочу получить строки с помощью UserShiftEndDate ›Сегодня. Но я не могу этого сделать с запросом с ключом раздела как UserShiftEndDate. Как и в запросе, я не могу применить ›фильтр по ключу раздела - person NewBee; 21.12.2020