Как оптимизировать запросы к MongoDB для получения данных в сообщении чата?
Добрый день, уважаемые!
Мы разрабатываем корпоративный мессенджер и встал вопрос об оптимизации данных.
Сейчас все сообщения хранятся в Mysql (id_message, id_user, time_insert, data_json). Каждая «комната» это отдельная таблица на сервере (серверов несколько). В каждой комнате могут быть до 10 000+ сообщений, комнат может быть неограниченное число. В Mysql делаем только запись и чтение, UPDATE, DELETE запрещен.
На стороне клиента по мере поступления сообщений - данные кэшируются и при следующем запросе на новые сообщения мы отправляем последний id сообщения, сервер нам отдает только записи больше этого id (но не больше 100, если система отдала не все сообщения - догружаем последующие после получения и записи в кэш данных).
Встал вопрос об распределении данных между MySQL и MongoDB - в мускуле хотим хранить id_message,id_user,time_insert, mongo_id (оптимизация структуры хранения timeline сообщений) в MongoDB только data_json, т.к. в data_json может быть немаленький объем данных (сообщение, прикрепленные данные: id фото, координаты и вот это все...).
С точки зрения оптимизации MongoDB - записи лучше получать по mongo_id в момент обхода записей из MySQL (до 100 записей, 100 запросов в MongoDB за один запрос) или в момент обхода MySQL собираем массив из записей mongo_id и после делаем один запрос к MongoDB?
MongoDB начал изучать… вчера, поэтому буду рад детальным ответам и советам, может вообще ну его и оставить все в Mysql?
Если и переходить с мускула, то явно не на монгу, а на постгрес
Если начали изучать монгу вчера, то вернитесь к данному вопросу лет через 5 активного изучения монги