170 похожих чатов

Привет. У меня задача есть где мне нужно записывать данные

в базу данных в чайлд процессе. Меня интересует как это корректно делать между основным процессом и дочерним а именно шарить конекшен бд между дочерним и родительским процессом или же создавать новый конекшен под чайлд процесс?

55 ответов

25 просмотров

Подключаться к бд в каждом процессе

ipc в помощь

Alexandra Grigoryeva
ipc в помощь

Что именно ты предлагаешь передавать посредством IPC?

Алексей Попов
Что именно ты предлагаешь передавать посредством I...

Мейн поток пусть управляет пуллом коннектов, а дочерние кидают запросы через ipc в майн поток. Возвращать ответ, думаю, догадаешься как

Dima-Haponov Автор вопроса
Alexandra Grigoryeva
Мейн поток пусть управляет пуллом коннектов, а доч...

Ну с одной стороны меньше открытых подлкючений к базе данных но разве такой подход не создает дополнительные накладные расходы на межпроцессное взаимодействие?

Alexandra Grigoryeva
Мейн поток пусть управляет пуллом коннектов, а доч...

То есть ты предлагаешь подключаться к базе только из основного процесса? Но по вопросу понятно, что человеку нужен доступ к бд из дочернего процесса

Dima Haponov
Ну с одной стороны меньше открытых подлкючений к б...

любая работа с многопотоком в ноже/дено создает кучу условностей

Алексей Попов
То есть ты предлагаешь подключаться к базе только ...

передавая запросы ты не будешь иметь доступ к базе?)

Dima Haponov
Ну с одной стороны меньше открытых подлкючений к б...

Нет никаких проблем с множеством коннектов к бд. Из разных процессов, от разных узлов сети - не важно

Алексей Попов
Нет никаких проблем с множеством коннектов к бд. И...

Нет никаких проблем с множеством коннектов к бд - как раз-таки и есть. В зависимости от базы - обработка, валидация каждого соединения/запроса от соединения является очень дорогим процессом

Alexandra Grigoryeva
передавая запросы ты не будешь иметь доступ к базе...

Ты хочешь передавать в процессы запросы? Поясни, что ты имеешь в виду

Dima-Haponov Автор вопроса
Алексей Попов
Нет никаких проблем с множеством коннектов к бд. И...

Открытие и закрытие соединений с базой данных требует больших вычислительных ресурсов. Например, если вы используете сервер API, вас позаботятся о дополнительной задержке, возникающей при открытии и закрытии соединения с базой данных. Разве не так?

Алексей Попов
Ты хочешь передавать в процессы запросы? Поясни, ч...

возьмем на примере сраный мускл. я по ipc отправляю условный объект с айдишником и запросом и возвращаю по ipc ответ

Alexandra Grigoryeva
Нет никаких проблем с множеством коннектов к бд - ...

Нет никаких проблем Надо устанавливать коннекты при старте процесса, и делать их пул. А не устанавливать новый коннект при каждом запросе

Alexandra Grigoryeva
проблема со стороны базы больше

Какая проблема? Больше конкретики, пожалуйста

Dima-Haponov Автор вопроса

ну а если у тебя 100 чайлдов к примеру

Задача аналогично тому, что надо поднять несколько инстансов приложения, и спрятать за балансером?

Dima Haponov
ну а если у тебя 100 чайлдов к примеру

Зачем тебе 100 чайлдов? Во-первых, возможно тут А В проблема. Опиши, что именно ты решаешь. Может быть твою проблему надо решать с другой стороны Во-вторых, если у тебя "норамльная" СУБД, а не встраиваемая, даже 100 клиентов, у каждого из которых пул коннектов - не проблема

Алексей Попов
Зачем тебе 100 чайлдов? Во-первых, возможно тут А ...

отлично, условно мы работаем по формуле 1 чайлд = 1 коннект. тогда мы упираемся в пропускную способность одного соединения. как решать будем?

Никак. Если база разрешает только одно соединение (мало ли), то придется через сообщения между процессами реализовать "RPC". Если же можно много соединений, то как сказано -- создавать в каждом процессе свое

Алексей Попов
Нет никаких проблем с множеством коннектов к бд. И...

А в постгре уже пофиксили, или всё ещё через pgbouncer рпботают?

Dima-Haponov Автор вопроса
Алексей Попов
Зачем тебе 100 чайлдов? Во-первых, возможно тут А ...

сейчас их 20 но в перспективе когда-то может быть и 100. У меня постгресс

Artem Soroka
А в постгре уже пофиксили, или всё ещё через pgbou...

Если я дам положительный ответ на этот вопрос в контексте текущей компании, в которой я работаю, то я нарушу nda

опять ахинея

Dima-Haponov Автор вопроса

каждый процесс обрабатывает долгие операции чтоб не блокировать основной процесс апишки

Dima Haponov
каждый процесс обрабатывает долгие операции чтоб н...

Это операции с нагрузкой на CPU? Как ты определяешь количество дочерних процессов? На каком железе это работает?

Dima-Haponov Автор вопроса
Алексей Попов
Это операции с нагрузкой на CPU? Как ты определяеш...

ну со всех задача на cpu у меня только одна это сделать беккап и я просто в чайлд экзекаю и все. Остальные больше операции с задержкой связаны то есть получить инфу с апишек каких то и время когда. придет ответ я не знаю

Dima Haponov
ну со всех задача на cpu у меня только одна это сд...

Тогда не нужны дочерние процессы и потоки. Нода асинхронная, и эти операции при правильной реализации не блочат ивент луп

Alexandra Grigoryeva
Че, правда? libuv так не думает

Как произносишь libuv?)) По царски и простолюдиному либув?))

хорош, ответку кинул, я слит

Alexandra Grigoryeva
хорош, ответку кинул, я слит

Прям мегахорош, учитывая, что ты спалил как домашку на принтере печатаешь))))

Alexandra Grigoryeva
это личный проект

Напомнило «Мам, я не курил, это пацаны попросили подержать»)))

Alexandra Grigoryeva
возьмем на примере сраный мускл. я по ipc отправля...

По-моему какая-то хрень. Не вижу проблемы из любого процесса работать с БД. Беспокоят накладные расходы - так а чего вы хотели чтобы сайт посещаемостью как ютюб мог запускаться на расбери пай? К вашему сообщению идеально подходит пикча где чел ехал себе спокойно на велике и потом сует палку между спецами колес 😁 . Да и потом, вы честно, померили эти накладные расходы то?

Feanorx
?

управлять отдельными соединениями сложнее и затратнее, чем пулом

Alexandra Grigoryeva
управлять отдельными соединениями сложнее и затрат...

Есть предложение как сделать пул общим для многих процессов?

Feanorx
Есть предложение как сделать пул общим для многих ...

если отказаться от ноды не варик...тогда писать новые модули на cpp

То есть, никак. Так, и в чём была ахинея?

Feanorx
То есть, никак. Так, и в чём была ахинея?

в том, что создание отдельного коннекта к базе сделает только хуже

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Oh sorry did you want it in Gunter's chains?
Martin Rys
15
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта