Веб-приложение на ReactJS, nodejs+express сервер, бд PostgresSQL.
Сейчас все на REST. В основном - запросы данных при загрузке страниц (1-2 запроса на каждую страницу), но также есть несколько часто используемых полей ввода с динамическим автодополнением (то есть на каждый keyup происходит rest запрос в бд, чтобы найти подходящие варианты). Кроме того, есть не слишком важная система уведомлений. Real-time приход уведомлений не слишком важен, но лишним не будет.
Единственно важный функционал, который, как я думаю, напрасно сделан на REST вместо веб-сокета - это синхронизация данных пользователя. Дело в том, что пользователь может редактировать множество общих объектов в веб-приложении, и в некоторых случаях отредактированный объект может повлиять на данные пользователя, то есть их приходится запрашивать периодически из бд.
Хорошо ориентируюсь в REST, еще не работал с socket.io.
Собственно, вопрос:
Если перевести все общение с сервером на Socket.io, как это отразится на загруженность сервера?
Я, вот, только собираюсь сейчас сесть и начать изучать WebSockets на деле (в общих чертах, конечно, представление имею, но очень-очень абстрактное, так что, возможно, скажу глупость), но у меня сразу возникает обратный вопрос: а зачем (кроме как, может, ради совместимости с какими-то древними браузерами) вообще использовать для передачи данных между клиентской и серверной частью приложения обычный HTTP когда есть WS? Почему бы не писать сразу с WS и только с ними?
StrangeAttractor:
1. В php потому что не завезли способа работать с WebSockets так чтобы на хостингах ехало.
2. Не всем нужно постоянно держать открытое соединение.
3. Для перессылки только в сторону клиента есть caniuse.com/#feat=eventsource только в ie его похоже никогда не будет.
hbrmdc: почему же область применения специфична? Я знаю много сайтов, которые используют ее как основную бд. Да и у нас сайт целиком хранит данные в ней. Удобно, я вам скажу.
hbrmdc: очень провакационная статья. Да и девушка (автор) не разобравшись в noSQL пишет ересь. Звучит это приблизительно как: «Я ем 3-4 раза в день, последний раз я ела суп вилкой, никому не рекомендую пользоваться вилками!» :)
ну у меня сходная ситуация - я ем именно суп) У меня почти все типы объектов имеют связи с другими типами объектов. Дублировать инфу в каждом документе просто нет смысла с учетом частых мелких изменений.
Простейший пример: комментарий, у комментария есть текст и есть связь с пользователем, создавшим комментарий, чтобы можно было сформировать ссылку на страницу пользователя прямо из его комментария. У пользователя есть переменные, которые отображаются в каждом комменте - аватар и имя. Следовательно, мне нужно либо создавать связь с пользователем, либо копировать необходимые данные в каждый документ комментария.
То есть, мне нужна реляционность. К тому же, postgres (кажется с версии 9.4) также работает с json объектами, то есть у него есть и преимущества документо-ориентированой бд и реляционной. Если я не правильно это понимаю, пожалуйста, дайте ссылку на подходящую статью/видео на эту тему. Можно на английском.
Не убедительно, все доводы, которые я привел бы вам в пользу postgres приведены в комментариях. В любом случае, благодарю вас за предоставление альтернативной точки зрения!