У меня есть таблица AWS DynamoDB под названием «Пользователи», хэш-ключ/первичный ключ которой «UserID», состоящий из сообщений электронной почты. Он имеет два атрибута, сначала называемые «Daily Points», и второй «TimeSpendInTheApp». Теперь мне нужно запустить запрос или сканировать в таблице, что даст мне 50 лучших пользователей, которые имеют самые высокие точки и 50 лучших пользователей, которые проводят больше времени в приложении. Теперь этот запрос будет выполняться только один раз в день cron aws lambda. Я пытаюсь найти наилучшие решения для этого запроса или сканирования. Для меня стоимость важнее скорости или эффективности. Поскольку сохранение вторичного глобального индекса или локального индекса по точкам может быть дорогостоящим, поскольку я должен назначить единицы чтения и записи для этих индексов, чего я хочу избежать. Таблица «Пользователи» будет содержать от 100 000 до 150 000 записей, и в среднем она будет содержать 50 000 записей. Каковы мои лучшие варианты? Пожалуйста, предложите.Сканирование по таблице DynamDB или запрос по вторичному глобальному индексу или локальному индексу (лучшее решение)
Я думаю, что я первый вариант, я могу сканировать всю таблицу в разделе «Выражение фильтра» для записей выше определенных точек (например, 5000), после этого сканирования, если найдено 50 или более 50 записей, значения и принять 50 лучших записей. Если это сканирование возвращает нет или очень мало результатов, уменьшите значение выражения фильтра (например, 3000), затем повторите ту же операцию сканирования. Если значение выражения фильтра (например, 2500) возвращает слишком много записей, например 5000 или более, уменьшите значение выражения фильтра. Возможно ли это, я думаю, это также нужно будет обрабатывать разбиение на страницы. Целесообразно ли сканировать таблицу, содержащую 50 000 записей?
Любые советы или предложения будут полезны. Заранее спасибо.