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
Я хочу иметь возможность запросить эту таблицу следующими двумя способами:
- Самые последние строки (на основе даты) пользователем. например, User=1 возвращает 2 строки из 5/16 (3-я и 4-я строка)
- Самые последние строки (на основе даты) по пользователю и категории. например, User=1, Category=Red возвращает только строку 5/16 (3-я строка).
Это лучший способ смоделировать это с HASH на пользователя, RANGE на дату и GSI с HASH на пользователя + категория и RANGE на дату? Есть ли что-нибудь еще, что может быть более эффективным? Если это путь наименьшего сопротивления, мне все равно нужно знать, сколько строк вернуть, что потребует подсчета отдельных категорий или чего-то еще?
1 ответ
Я решил, что будет проще изменить способ хранения документов. Я перенесу категорию и другие атрибуты в поддокумент, чтобы я мог легко выполнить запрос к User+Date, и я сделаю любой запрос User+Category+Date с некоторым клиентским кодом для набора результатов User+Date.