Я знаю, что это можно сделать двумя способами:
Метод 1 Глобальный вторичный индекс GSI
GroupBy - это своего рода раздел в DynamoDB (но не совсем ). Ваш раздел в настоящее время user_id
я предполагаю, но вы хотите video_id
в качестве ключа раздела и timestamp
в качестве ключа сортировки. Вы можете сделать это, создав новый GSI, и указать новый ключ сортировки timestamp
и ключ разделения video_id
. Это дает вам возможность запрашивать для данного видео последнюю отметку времени, поскольку этот запрос будет использовать только 1 RCU и будет очень быстрым, просто добавьте --max-items 1 --page-size 1
. Но вам нужно будет предоставить video_id
.
Метод 2 Разреженный индекс
Проблема с 1 заключается в том, что вам необходимо предоставить идентификатор в то время как вы можете просто хотеть иметь список видео с их последней отметкой времени. Есть несколько способов сделать это, один из способов, которые мне нравятся, это использовать Sparse Index, если у вас есть атрибут с именем latest
и для него значение true для последней timestamp
, вы можете создать GSI и выбрать ключ атрибута latest
, но вам не придется вручную устанавливать и сбрасывать это значение самостоятельно, что вы должны делать в лямбда-потоках или в вашем приложении.
Это кажется странным, но это так * Нет SQL работает в отличие от SQL, с которым я сам сейчас борюсь в текущем проекте, где мне приходится использовать некоторые из этих техник самостоятельно, каждый раз, когда я делаю это, просто не чувствую себя хорошо, но, надеюсь, мы привыкнем к этому.