Оптимальный способ реализовать флаги чтения сообщений на форумах?

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

Первое, что приходит на ум, - это чистый способ создания таблицы со столбцами post_id и user_id, в которых каждая строка будет представлять прочитанное сообщение пользователем. Но это приводит к добавлению большого количества данных и снижению производительности базы данных. И даже больше данных, вставленных после нажатия на «отметить все как прочитанные». Если бы все пользователи прочитали все сообщения, это означало бы (количество пользователей) * (количество сообщений) строк в базе данных.

Этот метод можно оптимизировать для хранения меток времени для каждого потока и каждого пользователя и обновления этих меток времени каждый раз, когда пользователь читает новые сообщения. Но это все еще много данных. Это будет означать (количество пользователей) * (количество потоков) строк.

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

Спасибо за любые идеи.

6
задан Ondřej Mirtes 1 March 2011 в 22:24
поделиться