Проектные подходы к хранению недавно использованных элементов в MongoDB

#mongodb

#mongodb

Вопрос:

У меня проблема с дизайном с несколькими решениями, я хотел посмотреть, может ли кто-нибудь дать представление о количественных компромиссах, какой подход лучше.

Проблема: у меня есть список элементов в MongoDB, где-то от 10 до 100 000 (разумно). Я хотел бы иметь возможность представить свои лучшие 100 недавно использованных товаров в порядке от самых недавно использованных до наименее недавно использованных.

Решение 1: я добавляю временную метку к каждому из элементов MongoDB. Когда я использовал элемент, я обновлял временную метку для этого элемента. Чтобы сгенерировать 100 моих лучших недавно использованных элементов, я запрашиваю MongoDB, сортирую элементы по последней использованной временной метке, а затем представляю 100 лучших отсортированных элементов. Я думаю, что это решение вносит наименьшее количество изменений в текущую реализацию, но может быть медленным, если оно запрашивает и сортирует, например, 100 000 элементов (особенно, если этот запрос выполняют несколько пользователей).

Решение 2: Я создаю новую коллекцию MongoDB, в которой хранятся только 100 лучших элементов в массиве. Каждый раз, когда я использую элемент, я добавляю элемент в массив, и если массив превышает 100 элементов, я извлекаю последний элемент. Я думаю, это решение кажется более быстрым, поскольку запрос просто возвращает все из последней коллекции.

С точки зрения производительности (для пользователя), какой подход лучше? Или есть альтернативный, еще лучший подход?