Dynamodb для запросов диапазона дат - PullRequest
1 голос
/ 07 июля 2019

Я создаю приложение для хранения всей информации о людях, у которых есть подписка на определенный период.Данные, которые я храню в таблице DynamodB:

  1. personId
  2. beginDate
  3. EndDate

Теперь я хотел написать такие запросы, как

  1. получить всех людей, которые активны в течение определенного периода (между датой 1 и датой 2)
  2. получить всех людей, которые активны наконкретную дату.

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

Имеет ли это смысл?Или есть лучший способ сделать это в Dynamodb?

1 Ответ

0 голосов
/ 10 июля 2019

Ваш дизайн кажется правильным.
Вам потребуется 2 GSI:

  1. Hash_key в начале и Range_key в конце.
  2. hash_key в конце и range_key в начале

Для запроса 1 вам потребуется запросить GS1 с помощью

  1. начало между датой 1 и датой 2 (используйте GSI1)
  2. конец между датой 1 и датой 2 (используйте GSI2)
  3. начинаются до даты1 (GSI1) и заканчиваются после даты2 (GSI2) и занимают пересечение списка

запрос 2 совпадает с запросом 1 только в том случае, если дата начала - первая секунда даты, а дата окончания - последняя секунда даты.

...