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