duba
Новичок
Помогите и посоветуйте. Проблема с оптимизацией.
Задача такая: Есть пользователи и их какие-то события. Один пользователь добавляет что-то (например пишет комментарий к статье). После добавления записи мне нужно проинформировать остальных пользователей о том, что этот пользователь написал новый комментарий. Рассматриваю случай когда при добавлении записи мне нужно проинформировать около 200 других пользователей. Тоесть при добавлении 1 главной записи , мне придёться ещё добавить 200 записей об информировании:
INSERT INTO log_evets (кто_информируе, кого_информировать, текст_информации_или_id_события) VALUES (3, 4, 'Михаил добавил комментарий к статье .... ');
Допустим что у нас 2000 пользователей и каждый добавил 2 комментария, но у каждого по 200 подпищиков которых нужно проинформировать. Тоесть мы получаем на 2000*2*200 = 800 000. (почти миллион записей).
Далее я размышляю так: Что бы всё это более мение быстроо работало, я могу создать VIEW (MySQL 5) view_log_evets в котором буду ограничевать записи например по дате или какому-то количеству. (Что бы старые записи не мешали новым, да и просто что бы выборка была быстрее). Я так же могу создать какую то временную таблицу в которую буду помещать очередь добавления об информировании (Для того что бы мне INSERT делать 1 раз и сразу для большой кучи событий, при этом проверять не сильно ли загруженна база, и вообще не занята ли таблица для записи).
Таким способом я прихожу к довольно грамотной архитектуре, но меня всё равно пугает количество записей которые необходимо добавить что бы информировать пользователей о событиях других.
Я хотел бы узнать, правильно ли я мыслю по поводу оптимизации ?
Какие ещё методы можно использовать что бы решить данную задачу ?
Возможно есть вариант как то упростить весь подход к этой задаче ?
Задача такая: Есть пользователи и их какие-то события. Один пользователь добавляет что-то (например пишет комментарий к статье). После добавления записи мне нужно проинформировать остальных пользователей о том, что этот пользователь написал новый комментарий. Рассматриваю случай когда при добавлении записи мне нужно проинформировать около 200 других пользователей. Тоесть при добавлении 1 главной записи , мне придёться ещё добавить 200 записей об информировании:
INSERT INTO log_evets (кто_информируе, кого_информировать, текст_информации_или_id_события) VALUES (3, 4, 'Михаил добавил комментарий к статье .... ');
Допустим что у нас 2000 пользователей и каждый добавил 2 комментария, но у каждого по 200 подпищиков которых нужно проинформировать. Тоесть мы получаем на 2000*2*200 = 800 000. (почти миллион записей).
Далее я размышляю так: Что бы всё это более мение быстроо работало, я могу создать VIEW (MySQL 5) view_log_evets в котором буду ограничевать записи например по дате или какому-то количеству. (Что бы старые записи не мешали новым, да и просто что бы выборка была быстрее). Я так же могу создать какую то временную таблицу в которую буду помещать очередь добавления об информировании (Для того что бы мне INSERT делать 1 раз и сразу для большой кучи событий, при этом проверять не сильно ли загруженна база, и вообще не занята ли таблица для записи).
Таким способом я прихожу к довольно грамотной архитектуре, но меня всё равно пугает количество записей которые необходимо добавить что бы информировать пользователей о событиях других.
Я хотел бы узнать, правильно ли я мыслю по поводу оптимизации ?
Какие ещё методы можно использовать что бы решить данную задачу ?
Возможно есть вариант как то упростить весь подход к этой задаче ?