в базу данных в чайлд процессе. Меня интересует как это корректно делать между основным процессом и дочерним а именно шарить конекшен бд между дочерним и родительским процессом или же создавать новый конекшен под чайлд процесс?
Подключаться к бд в каждом процессе
ipc в помощь
Что именно ты предлагаешь передавать посредством IPC?
Мейн поток пусть управляет пуллом коннектов, а дочерние кидают запросы через ipc в майн поток. Возвращать ответ, думаю, догадаешься как
Ну с одной стороны меньше открытых подлкючений к базе данных но разве такой подход не создает дополнительные накладные расходы на межпроцессное взаимодействие?
То есть ты предлагаешь подключаться к базе только из основного процесса? Но по вопросу понятно, что человеку нужен доступ к бд из дочернего процесса
любая работа с многопотоком в ноже/дено создает кучу условностей
передавая запросы ты не будешь иметь доступ к базе?)
Нет никаких проблем с множеством коннектов к бд. Из разных процессов, от разных узлов сети - не важно
Нет никаких проблем с множеством коннектов к бд - как раз-таки и есть. В зависимости от базы - обработка, валидация каждого соединения/запроса от соединения является очень дорогим процессом
Ты хочешь передавать в процессы запросы? Поясни, что ты имеешь в виду
Открытие и закрытие соединений с базой данных требует больших вычислительных ресурсов. Например, если вы используете сервер API, вас позаботятся о дополнительной задержке, возникающей при открытии и закрытии соединения с базой данных. Разве не так?
возьмем на примере сраный мускл. я по ipc отправляю условный объект с айдишником и запросом и возвращаю по ipc ответ
Нет никаких проблем Надо устанавливать коннекты при старте процесса, и делать их пул. А не устанавливать новый коннект при каждом запросе
проблема со стороны базы больше
Зачем тебе их закрывать?
Какая проблема? Больше конкретики, пожалуйста
ну а если у тебя 100 чайлдов к примеру
Задача аналогично тому, что надо поднять несколько инстансов приложения, и спрятать за балансером?
Зачем тебе 100 чайлдов? Во-первых, возможно тут А В проблема. Опиши, что именно ты решаешь. Может быть твою проблему надо решать с другой стороны Во-вторых, если у тебя "норамльная" СУБД, а не встраиваемая, даже 100 клиентов, у каждого из которых пул коннектов - не проблема
отлично, условно мы работаем по формуле 1 чайлд = 1 коннект. тогда мы упираемся в пропускную способность одного соединения. как решать будем?
Никак. Если база разрешает только одно соединение (мало ли), то придется через сообщения между процессами реализовать "RPC". Если же можно много соединений, то как сказано -- создавать в каждом процессе свое
А в постгре уже пофиксили, или всё ещё через pgbouncer рпботают?
с 11 версии не нужен он
сейчас их 20 но в перспективе когда-то может быть и 100. У меня постгресс
Если я дам положительный ответ на этот вопрос в контексте текущей компании, в которой я работаю, то я нарушу nda
опять ахинея
каждый процесс обрабатывает долгие операции чтоб не блокировать основной процесс апишки
Это операции с нагрузкой на CPU? Как ты определяешь количество дочерних процессов? На каком железе это работает?
ну со всех задача на cpu у меня только одна это сделать беккап и я просто в чайлд экзекаю и все. Остальные больше операции с задержкой связаны то есть получить инфу с апишек каких то и время когда. придет ответ я не знаю
Тогда не нужны дочерние процессы и потоки. Нода асинхронная, и эти операции при правильной реализации не блочат ивент луп
Че, правда? libuv так не думает
стыдно восхвалять ноду, не зная ее базу
Как произносишь libuv?)) По царски и простолюдиному либув?))
канешн либув, я че англичанин что ли
А почему не делаете через wal-d sidecar?
@murzilka17 тебе бросили перчатку
Каникулы начались, что поделать
хорош, ответку кинул, я слит
Прям мегахорош, учитывая, что ты спалил как домашку на принтере печатаешь))))
это личный проект
Напомнило «Мам, я не курил, это пацаны попросили подержать»)))
а, и, это никак не опровергает мои слова
По-моему какая-то хрень. Не вижу проблемы из любого процесса работать с БД. Беспокоят накладные расходы - так а чего вы хотели чтобы сайт посещаемостью как ютюб мог запускаться на расбери пай? К вашему сообщению идеально подходит пикча где чел ехал себе спокойно на велике и потом сует палку между спецами колес 😁 . Да и потом, вы честно, померили эти накладные расходы то?
управлять отдельными соединениями сложнее и затратнее, чем пулом
Есть предложение как сделать пул общим для многих процессов?
если отказаться от ноды не варик...тогда писать новые модули на cpp
То есть, никак. Так, и в чём была ахинея?
в том, что создание отдельного коннекта к базе сделает только хуже
Обсуждают сегодня