Извлекать записи в отсортированном порядке на основе «createAt» в DynamoDB - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть сценарий использования, где у меня есть записи (MAC-адреса устройства) в таблице DynamodB.Я хочу получить записи и обработать их.Есть ли способ получить записи в отсортированном порядке и ограничить результат 10?DynamoDB обязывает предоставить хеш-ключ в выражении запроса, которого у меня нет в моем случае.Даже в GSI должен быть хеш-ключ в запросе (даже если он отличается от хеш-ключа основной таблицы).Любая помощь будет высоко оценена.

1 Ответ

0 голосов
/ 14 декабря 2018

Единственный способ получить ограничения и состоит в использовании запросов , а не сканирований .

Но у вас, похоже, нет хеш-ключа, поэтому вы не можете использовать запросы.Какие у вас варианты?

Мне приходит в голову два.

Первый: хранить createAt не как метку времени, а как дату и метку времени.Создайте глобальный вторичный индекс с ключом хеша, установленным на дату, и диапазоном, установленным на метку времени.Таким образом, вы сможете запросить этот индекс с сортировкой и ограничениями.Тем не менее, если у вас есть меньше, чем желаемый лимит элементов в один день, он не будет работать (вам нужно запросить предыдущую дату).

Второй: используйте DynamoDB Streams + Lambda, чтобы получать уведомления о новых записях и хранитьих в другом месте удаляют самый старый, образуя кэш LRU желаемого размера (предела).Вы даже можете использовать сканирование для поиска самого старого элемента в этом кэше, потому что его размер не будет большим.

...