Меня немного смущает ваша диаграмма. Разве участники беседы не должны быть связаны с беседами вместо сообщения? ФК выглядят хорошо, просто линии выглядят неправильно.
Я бы пока не беспокоился о производительности. Анти-шаблон преждевременной оптимизации предупреждает нас не отказываться от чистого дизайна по соображениям производительности, пока мы не узнаем, не возникнет ли у нас проблема с производительностью. Вы ожидаете 1000 пользователей - это не так много для современной информационной системы. Даже если они все активны в одно и то же время и вводят сообщение каждые 10 секунд, это будет означать 100 транзакций в секунду, чего не стоит бояться. Конечно, я не знаю платформу, на которой вы собираетесь это запустить. Но это должно быть простой задачей - настроить эти таблицы и написать простую тестовую программу, которая вставит эти записи как можно быстрее.
Ваш второй вопрос заставляет меня задуматься, насколько «мгновенно» вы ожидаете, что ваше сообщение будет проходить,Должны ли все читатели сообщения получать каждое нажатие клавиши в течение миллисекунды? Или им просто нужно, чтобы каждое сообщение появлялось сразу после его публикации? В любом случае, ограничивающим фактором для реагирования пользователей, вероятно, будет сеть, а не база данных.
Возможно, это не проблема проектирования базы данных. Предположим, у вас будет огромный процент публикаций и просмотров. Но не все разговоры будут заняты все время. Если возникает необходимость - но не раньше, - возможно, потребуется сохранить текущие занятые разговоры в памяти и использовать базу данных в качестве резервной копии на будущее, когда они больше не будут заняты.
Относительно ваших дополнительныхкомментарии:
100 тыс. пользователей: это тема не для этого форума, а для развития бизнеса стартапа. Многие основатели стартап-компаний представляют огромную массу пользователей, привлекаемых к их сайту, в то время как в действительности большинство стартапов просто терпят неудачу или достигают очень немногих. Поэтому остерегайтесь инвестиций (в деньги, а также в разработку и реализацию), которые окупят только в очень невероятном случае, что ваша компания станет следующим WhatsApp.
В случае, если вы действительно не ожидаете таких масспользователей, но просто хотите представить это как упражнение по программированию, у вас все еще есть трудная задача. У вас не будет платформы для симуляции трафика, поэтому невозможно измерить, где на самом деле нужно решить проблему производительности. Это одна из причин предупреждения «Преждевременная оптимизация»: если вы не знаете точно, где у вас есть узкое место, вы - и все мы - будем просто гадать и, вероятно, принимать неправильные решения.
Отметить сообщение как прочитанноеэто просто: введите логический атрибут read
в Message Участники и установите его в значение true, как только пользователь прочитает сообщение. Это зависит от ваших бизнес-требований, в каких случаях и кому вы это показываете.