Ситуация:Внедрение фида событий - будет ли оно масштабироваться?
Я в настоящее время разрабатываю систему подачи для социального сайта которой каждый пользователь имеет канал деятельности своих друзей. У меня есть два возможных метода создания фидов, и я хотел бы спросить, что лучше всего с точки зрения возможности масштабирования.
События от всех пользователей собраны в одной таблице центральной базы данных, event_log
. Пользователи находятся в паре в качестве друзей в таблице friends
. СУБД, которые мы используем, - это MySQL.
Стандартный метод: Когда пользователь запрашивает страницу их подачи, система формирует канал путем присоединения внутренней event_log
с friends
. Результат затем кэшируется и устанавливается на таймаут через 5 минут. Масштабирование достигается путем изменения этого таймаута. Метод
предполагаемыми: Задача выполняется в фоновом режиме и для каждого нового необработанного элемента в event_log
, он создает записи в таблице базы данных user_feed
спаривания это событие со всеми пользователями, которые являются друзьями с пользователем, который инициировал событие. Одна строка таблицы объединяет одно событие с одним пользователем.
Проблемы со стандартным методом хорошо известны - что, если многие тайники людей истекают одновременно? Решение также не очень хорошо масштабируется - краткое сообщение о том, что каналы могут обновляться как можно ближе к реальному времени
Предполагаемое решение в моих глазах кажется намного лучше; вся обработка выполняется в автономном режиме, поэтому пользователь не ожидает создания страницы, и нет объединений, поэтому таблицы базы данных могут быть распределены по физическим машинам. Однако, если пользователь имеет 100 000 друзей и создает 20 событий за один сеанс, это приводит к вставке в базу данных 2 000 000 строк.
Вопрос:
вопрос сводится к двум пунктам:
- Является ли это наихудший сценарий упоминалось выше проблематична, то есть ли размер таблицы имеют влияние на производительность MySQL и есть ли проблемы с этой массовой вставкой данных для каждого события?
- Есть ли что-нибудь еще, что я пропустил?
будет ли это смешать !!! –