DynamoDB Таблица / Индекс Моделирование + Запрос

Базовые требования:

У меня есть таблица с кучей атрибутов (20-30), но только 3 используются в запросах: пользователь, категория и дата, и будет структурировано что-то вроде этого...

User | Category | Date | ...
1    | Red      | 5/15
1    | Green    | 5/15
1    | Red      | 5/16
1    | Green    | 5/16
2    | Red      | 5/18
2    | Green    | 5/18

Я хочу иметь возможность запросить эту таблицу следующими двумя способами:

  1. Самые последние строки (на основе даты) пользователем. например, User=1 возвращает 2 строки из 5/16 (3-я и 4-я строка)
  2. Самые последние строки (на основе даты) по пользователю и категории. например, User=1, Category=Red возвращает только строку 5/16 (3-я строка).

Это лучший способ смоделировать это с HASH на пользователя, RANGE на дату и GSI с HASH на пользователя + категория и RANGE на дату? Есть ли что-нибудь еще, что может быть более эффективным? Если это путь наименьшего сопротивления, мне все равно нужно знать, сколько строк вернуть, что потребует подсчета отдельных категорий или чего-то еще?

1 ответ

Я решил, что будет проще изменить способ хранения документов. Я перенесу категорию и другие атрибуты в поддокумент, чтобы я мог легко выполнить запрос к User+Date, и я сделаю любой запрос User+Category+Date с некоторым клиентским кодом для набора результатов User+Date.

Другие вопросы по тегам