Ответы пользователя по тегу PostgreSQL
  • В чем отличие Pool и Client конструкторов в NPM пакете pg?

    Negezor
    @Negezor
    Senior Shaurma Developer
    Client — это одно соединение
    Pool — это хранилище соединений, которое по запросу выдаёт свободное соединение, если нет свободных, ждёт пока освободится и выдаёт освободившееся соединение. Соединения с базой это медленно, но если мы заранее поддерживает множество соединений, мы не тратим время на подключение. Так вот Pool берёт заботы о поддержании соединений на себя (обработку закрытия соединений, открытие новых соединений и поддержания соединений с помощью ping).

    Если мы говорим о приложении, то правильным выбором будет Pool.
    Ответ написан
    3 комментария
  • Как правильно работать в NodeJS с PostgreSQL?

    Negezor
    @Negezor
    Senior Shaurma Developer
    В пуле хранятся соединения, скажем 10 штук. Каждый раз когда мы вызываем pool.query(), мы запрашиваем соединение. Если соединение есть - производится запрос, а потом в пуле обновляется его статус на свободный. Если все соединения уже заняты - ждём пока освободится первый попавшийся. В документации же сказано, что вы должны возвращать соединения в pool (иначе когда подойдёт лимит соединений в пуле, запросы будут ожидаться бесконечно). А pool.end() нужно вызывать когда вам больше не понадобится текущий пулл запросов, например вы его временно создали для другой БД? Пулл сам создаст соединения по необходимости, конечно он не будет выходить за лимиты, иначе бы мы тратили все ресурсы на создание соединений.
    Ответ написан
    Комментировать