Вы должны использовать GSI с таким атрибутом, как 'yyyy-mm-dd' в качестве ключа хеш-функции и timestamp
в качестве ключа диапазона.Поскольку возможно, что за один день будет менее 10 комментариев, вам может потребоваться более одного запроса, но это довольно просто выполнить.
Псевдокод:
currentDate = today
while (results.size < 10)
results.add(queryDynamoDB(currentDate))
currentDate.subtract(1 day)
При запросеиндекс, запрос должен иметь
scanIndexForward = false
limit = 10
Таким образом, он будет возвращать до 10 результатов, которые являются самой последней отметкой времени для данного дня.Вам придется запрашивать более одного дня, если ваш форум не очень активен или новый день только начался.(Запросы на более чем один день не будут иметь значительных дополнительных затрат в RCU, только дополнительные задержки.)
Редактировать: Просто чтобы прояснить, это GSI, который я предлагаю.Поле YYYY-MM-DD - это поле, которое существует только для GSI.Основная таблица должна использовать какой-то уникальный (не основанный на времени) идентификатор в качестве хеш-ключа.