Как хранить голоса за пользователя

Я работаю над алгоритмом доставки предметов пользователю, где пользователь будет голосовать за каждый представленный ему товар. Я хочу предоставить пользователю элементы, недавно опубликованные в базе данных, за которые этот пользователь еще не проголосовал. Идея состоит в том, чтобы представить один и тот же пост как можно большему числу разных пользователей, но я хочу убедиться, что один пользователь никогда не получит один и тот же пост дважды (чтобы они не могли голосовать за один и тот же пост дважды, искажая результаты). Я загружу первые 20 элементов, которые найдет мой алгоритм, и обновлю список, когда пользователь опустится до 5 элементов.

Все предметы, представленные пользователю, будут голосовать "за" или "против".

Я знаю, что мог бы просто сохранить массив идентификаторов сообщений, за которые голосует пользователь, но мне кажется, что это может занять много места и увеличить объем вычислений после того, как пользователь некоторое время пользуется приложением. Я ищу предложения о том, как справиться с этой проблемой. Любые идеи были бы хорошими, могли бы помочь зажечь идею. Если вам нужна дополнительная информация, просто дайте мне знать, я был бы рад предоставить ее. Спасибо!

2 ответа

Решение

Если предположить, что идентификаторы вашего поста имеют какой-то последовательный порядок (и что пользователь голосует за каждый пост по порядку), вам нужно только сохранить идентификатор поста, который был добавлен последним. Таким образом, вы можете загрузить следующие 20 идентификаторов сообщений. Если пользователь может голосовать за сообщения не по порядку, вы можете сохранить разделы сообщений, за которые они проголосовали. (напр., user1 проголосовал за сообщения 3, 3,5,6,9,10, 10, поэтому вы сохраняете пары номеров 3,6 и 9, 10, указывающие на то, что за все сообщения между этими тысячами ID проголосовали, тем самым уменьшая количество используемого пространства..)

В качестве альтернативы, если у вас есть дата и время, когда были сделаны сообщения, вы можете отслеживать дату и время последнего сообщения, за которое проголосовал пользователь. Исходя из этого, вы сможете уменьшить размер, необходимый для вашего массива, до количества постов, сделанных в данный момент времени.

Это база данных. сохранить список

votes
-------
post_id
User_id
vote
vote_time
Другие вопросы по тегам