Вы должны использовать symbol и tradeId в качестве первичного ключа, а для запроса по дате вы можете создать GSI с yyyy-mm-dd
в качестве ключа раздела и hh:mm:ss
(или полной отметкой времени, если хотите) в качествеключ сортировки.Поскольку вы делаете 50 вставок в день, вы можете даже использовать yyyy-mm
в качестве ключа раздела GSI.
Чтобы выбрать последние 200, вы запрашиваете GSI с ключевым условным выражением yyyymmdd = :today
, сортировка = убывание, ограничение 200. Если вы получите менее 200 результатов, повторите запрос за предыдущий день.,Если у вас осталось менее 200 результатов, продолжайте запрашивать один день за раз, пока не получите нужный номер.(Если вы решите использовать yyyy-mm
в качестве ключа раздела GSI, адаптируйте эту стратегию, чтобы использовать месяцы вместо дней.)
Извлеките этот ответ на связанный вопрос, который имеет некоторыеподробнее об этом подходе.
Этот подход может не очень хорошо масштабируется, но, поскольку вы пытаетесь остаться в пределах бесплатного уровня DynamoDB, вам, вероятно, не нужно беспокоиться о масштабируемости,
Теперь, если вас совсем не интересуют лучшие практики, просто используйте yyyy-mm-dd
в качестве ключа раздела главной таблицы, а затем используйте hh:mm:ss:symbol:tradeId
в качестве ключа сортировки.Вы сможете запросить основную таблицу по дате (но не по чему-либо еще).