Size: a a a

pgsql – PostgreSQL

2020 August 08

М

Максим in pgsql – PostgreSQL
Надо одновременно
источник

A

Alex in pgsql – PostgreSQL
Максим
Поэтому надо несколько соединений
какое отношение роли субд имеют к соединениям?
источник

М

Максим in pgsql – PostgreSQL
Потому что использую asyncpg
источник

М

Максим in pgsql – PostgreSQL
Alex
какое отношение роли субд имеют к соединениям?
Чтобы соединиться с базой данных, нужна роль
источник

2_

2flower _ in pgsql – PostgreSQL
Сергей Голод
Ярослав, я правильно понимаю что если мне нужно сделать SELECT *****, потом обработка результатов, потом UPDATE **** (на основе обработанных результатов из предыдущего селекта), и потом финальный SELECT *** - мне потребуется три раза подключаться? Или все три запроса пройдут в рамках одного соединения, но нужно ожидать завершение каждого из запросов?
а почему их все через cte не сделать? или я не понял задачу?
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Максим
Потому что использую asyncpg
Он пуллинг не поддерживает?
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
Alex
зависит от того как вы работаете с базой данных. в общем случае нормальные люди используют соединения для выполнения нескольких запросов, если нужно.
именно так и я предполагал. Держим соединение открытым пока не выполним все необходимые запросы, после этого закрываем.
источник

A

Alex in pgsql – PostgreSQL
Максим
Потому что использую asyncpg
😂🤦‍♂️ клиника тут бессильна.
источник

A

Alex in pgsql – PostgreSQL
Сергей Голод
именно так и я предполагал. Держим соединение открытым пока не выполним все необходимые запросы, после этого закрываем.
ну или не закрываем, а возвращаем обратно в пул.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Сергей Голод
Ярослав, я правильно понимаю что если мне нужно сделать SELECT *****, потом обработка результатов, потом UPDATE **** (на основе обработанных результатов из предыдущего селекта), и потом финальный SELECT *** - мне потребуется три раза подключаться? Или все три запроса пройдут в рамках одного соединения, но нужно ожидать завершение каждого из запросов?
Хмм... или я неправильно прочитал вопрос, или такой метод работы — грубая ошибка.
Любые "на основе" обязаны выполняться внутри одной транзакции, поэтому подключение тут только одно...
Или я не так понял, всё же?
источник

A

Alex in pgsql – PostgreSQL
Сергей Голод
именно так и я предполагал. Держим соединение открытым пока не выполним все необходимые запросы, после этого закрываем.
не обращайте внимания. тут у человека волчанка^W asyncio головного мозга. это когда где-то услышал что асинхронность это круто, но нихрена не разобрался зачем, как это работает и что с этим всем делать.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Максим
Чтобы соединиться с базой данных, нужна роль
И что? Одна и та же роль по умолчанию может установить неограниченное количество соединений с базой одновременно.
Т.е. при чём тут роли?
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
2flower _
а почему их все через cte не сделать? или я не понял задачу?
В CTE нельзя вынести работу с другими сервисами. Например мне нужно взять из ПГ данные, потом получить ещё данные из других источников ("обогатить запрошенные данные") и уже обновить данные в ПГ
источник

A

Alex in pgsql – PostgreSQL
Yaroslav Schekin
И что? Одна и та же роль по умолчанию может установить неограниченное количество соединений с базой одновременно.
Т.е. при чём тут роли?
К - Компетентность. Извините, я тут просто слегка сползу под стол.
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
Yaroslav Schekin
Хмм... или я неправильно прочитал вопрос, или такой метод работы — грубая ошибка.
Любые "на основе" обязаны выполняться внутри одной транзакции, поэтому подключение тут только одно...
Или я не так понял, всё же?
если на основе данных только из ПГ - то согласен. Но данные могут отсутствовать в ПГ
источник

2_

2flower _ in pgsql – PostgreSQL
Сергей Голод
В CTE нельзя вынести работу с другими сервисами. Например мне нужно взять из ПГ данные, потом получить ещё данные из других источников ("обогатить запрошенные данные") и уже обновить данные в ПГ
можно попробовать все делать из пг, но не факт что это правильно в зависимости от задачи.
источник

A

Alex in pgsql – PostgreSQL
Сергей Голод
В CTE нельзя вынести работу с другими сервисами. Например мне нужно взять из ПГ данные, потом получить ещё данные из других источников ("обогатить запрошенные данные") и уже обновить данные в ПГ
зависит от логики, хотите ли вы это делать в одной транзакции или  же нет. в любом случае транзакция существует толкьо в рамках соединения, в котором она была открыта.
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
2flower _
можно попробовать все делать из пг, но не факт что это правильно в зависимости от задачи.
нет, из ПГ вряд ли получиться. У меня скорее вопрос в требуемом кол-ве соединений для работы таких сервисов "обогащения данных".
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
Alex
зависит от логики, хотите ли вы это делать в одной транзакции или  же нет. в любом случае транзакция существует толкьо в рамках соединения, в котором она была открыта.
в рамках одного соединения может быть несколько транзакций разнесённых по времени (10сек - 100 сек)?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Сергей Голод
если на основе данных только из ПГ - то согласен. Но данные могут отсутствовать в ПГ
Тогда их может предоставлять клиент (или их можно получать и с помощью PostgreSQL, но это, обычно, хуже).
Требования "в одной транзакции" это же не отменяет.
источник