Почему тебе нужен PgBouncer, как его установить? Оптимизируем веб-приложения с PostgreSQL

Фильм және анимация

Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.digital/
Telegram: t0digital.t.me
Сказать спасибо за это видео можно здесь - boosty.to/digitalize.team
PgBouncer - пулер соединений к PostgreSQL. Поговорим о том, что это, зачем нужно и почему делать приложения на Python без него так грустно, а затем установим и настроим PgBouncer.
Команда из видео:
echo "md5"$(echo -n 'PasswordUser' | md5sum | awk '{print $1}')
0:00 Как работает PostgreSQL?
1:37 В чём проблема?
3:53 Что с этим делать?
4:58 Как нам поможет PgBouncer?
7:19 Установка и настройка PgBouncer
11:14 Доработка приложения для PgBouncer
11:49 Выводы
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Если у вас есть проект на разработку, пишите нам на hi@digitalize.team.
С другими предложениями, а также если вам нужна одна или несколько индивидуальных консультаций/уроков по разработке (3000 руб/час), пишите мне на alexey@salesbeat.pro.
Telegram канал - t.me/t0digital
ВК - digitalize.team
RuTube - rutube.ru/channel/24802975/ab...
Дзен - dzen.ru/id/6235d32cb64df01e6e...

Пікірлер: 240

  • @barsukov_vv
    @barsukov_vv3 жыл бұрын

    ну про. плюсы рассказал, добавлю немного: 1. забыл упамянуть, что если юзать транзаакшин мод, то забудьте про препаред-стейтстмент, 2. дебажить запросы почти не реально, тяжело сматчить с pg_stat_activity 3. баунсер не решает проблем плохих запросов, если запрос ставит шаред-лок на таблицу, то хоть 2000 конеекшинов ставь ничего не поможет 4. есть прикольная альтернатива от Яндекса, одисей. в инете есть доклад какую проблему не смог решить баунсер и почему пришлось писать свой 5. с 11 версии постгрес спокойно держит 2000 соединений, но небольшая деградация происходит уже где то на 1000

  • @jandublianski744

    @jandublianski744

    3 жыл бұрын

    "1. забыл упамянуть, что если юзать транзаакшин мод, то забудьте про препаред-стейтстмент" - спасибо! pool_mode = session работает так как надо

  • @barsukov_vv

    @barsukov_vv

    3 жыл бұрын

    @@mythbuster6126 интересная логика, random_page_cost так же равен 4, и что это могло значить?

  • @mihax56

    @mihax56

    3 жыл бұрын

    @@mythbuster6126 дефолтные настройки ПГ выбраны таким образом, чтоб он на чайнике запускался - не надо их брать за эталон.

  • @sergeysemibratov509

    @sergeysemibratov509

    2 ай бұрын

    Since version 1.21.0 PgBouncer can track prepared statements in transaction pooling mode

  • @andreym2502
    @andreym25023 жыл бұрын

    Хотелось бы ещё тест нагрузочный посмотреть , как это работает :)

  • @vadimdorokhov8375
    @vadimdorokhov83753 жыл бұрын

    Класс👍. Побольше бы такого раскрытия нюансов и тонких мест web-приложений на python!

  • @DejaVooDM
    @DejaVooDM3 жыл бұрын

    Спасибо за ваш труд, очень полезный контент. Жду информацию про курс

  • @maxymvelushchac3150
    @maxymvelushchac31503 жыл бұрын

    Один из самых содержательных капалов по питону. Спасибо! Очень классно!

  • @troyhunter3586
    @troyhunter35863 жыл бұрын

    Хм, классная штука, не знал, благодарю тебя!

  • @Oleksii_Leshchenko
    @Oleksii_Leshchenko3 жыл бұрын

    Пошел применять) Спасибо

  • @wollenszeit131
    @wollenszeit1312 жыл бұрын

    Очень полезное видео! Спасибо за твой контент🏆

  • @MrDimka12101
    @MrDimka121013 жыл бұрын

    Очень полезная информация. В ближайшее время настрою это на сервере!

  • @user-hs7jm3nc2e
    @user-hs7jm3nc2e3 жыл бұрын

    О! Спасибо снова что-то новенькое узнал!

  • @RastegaevDienis
    @RastegaevDienis3 жыл бұрын

    В MySQL Connection Pooling - это native штука. Спасибо что рассказал что со слоном тоже есть хороший тул! Респект!

  • @user-vn2wr9du9i
    @user-vn2wr9du9i3 жыл бұрын

    Блин, как я без этого раньше работал?) Большое спасибо

  • @Smarandii
    @Smarandii3 жыл бұрын

    Очень хочется больше видео!

  • @alexsukhykh5666
    @alexsukhykh56663 жыл бұрын

    Спасибо! Не знал. Возьму в работу

  • @FillerWorld
    @FillerWorld3 жыл бұрын

    Код в видео выглядит очень стильно без фона. Как всегда интересно!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо!

  • @pontiuspilatus8475
    @pontiuspilatus84753 жыл бұрын

    Спасибо большое, нужно больше видео о подобных утилитах!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Будут:)

  • @user-ey8lc3vz7n
    @user-ey8lc3vz7n3 жыл бұрын

    Можно как нибудь рассказать про SQLAlchemy?

  • @PaiNtRuTube

    @PaiNtRuTube

    3 жыл бұрын

    В алхимии из коробки более кастомизируемы параметры соединения, и кроме того есть такое понятие как "пул соединений"

  • @aibarbekkozhayev2047
    @aibarbekkozhayev20473 жыл бұрын

    Спасибо большое, надеюсь на канале скоро будет 1млн)

  • @t0digital

    @t0digital

    3 жыл бұрын

    Идём к этому:)

  • @Mwmwjwjjdjdjdjwmwmkjaj
    @Mwmwjwjjdjdjdjwmwmkjaj5 ай бұрын

    Video uchun rahmat. Foydali ma'lumot bo'ldi! Nasib bo'lsa, Pgbouncerni proyektimizda qo'llab ko'ramiz.

  • @user-so1rr2is7b
    @user-so1rr2is7b3 жыл бұрын

    Спасибо! только лайк! оч полезная инфа

  • @alfarlatypov
    @alfarlatypov3 жыл бұрын

    Годно, очень годно! Спасибо большое! Я помню у нас его ставили для того, чтобы он закрывал коннекты которые простаивали в ожидании! И я о нем только слышал, а теперь все понятно объяснили 👍 лайк однозначно!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо! 💪

  • @sw1881
    @sw18813 жыл бұрын

    Спасибо за контент!

  • @MS-fu3zf
    @MS-fu3zf3 жыл бұрын

    Большое спасибо. Буду теперь юзать новый инструмент.

  • @t0digital

    @t0digital

    3 жыл бұрын

    Рад, что полезно!

  • @robin4183
    @robin41833 жыл бұрын

    Отлично! Подобное видео про WSGI и gunicorn будет?

  • @evlazarev
    @evlazarev3 жыл бұрын

    Полезно. Доступно. Спасибо.

  • @illiadenysenko7776
    @illiadenysenko77763 жыл бұрын

    Кстати вместо `sudo vim` можно использовать `sudoedit`, чтобы не менять пользователя и использовать свой конфиг) Только EDITOR=vim поставить.

  • @user-uv2rn5qx8o
    @user-uv2rn5qx8o3 жыл бұрын

    Используем Patroni для кластеризации PostgreSQL, там как раз pg_bouncer + consul или etcd можно

  • @alexandrvoloshyn8225
    @alexandrvoloshyn82253 жыл бұрын

    Спасибо за видео!

  • @Svetoz
    @Svetoz3 жыл бұрын

    Огонь! Спасибо!

  • @user-oi1zl6de8i
    @user-oi1zl6de8i3 жыл бұрын

    Спасибо, отлично объясняете!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо!

  • @vladimir_v_it
    @vladimir_v_it4 ай бұрын

    Классно, понятно рассказал!

  • @andreychernykh256
    @andreychernykh2563 жыл бұрын

    спасибо! как всегда годнота!!!!

  • @Igor-if7sx
    @Igor-if7sx3 жыл бұрын

    Дружищеееее! Спасибо!)

  • @andreyduke_kz2638
    @andreyduke_kz26383 жыл бұрын

    Интересный обзор 👍

  • @ilyazvorygin7284
    @ilyazvorygin7284 Жыл бұрын

    кайф, пасиб, помогло видео!

  • @belikk1986
    @belikk1986 Жыл бұрын

    Спасибо за видео! Обратите внимание на то, что по умолчанию ротации логов нет.

  • @user-dy5wn7sf6v
    @user-dy5wn7sf6v Жыл бұрын

    Спасибо! Благодаря Вашим видео, деплой сервера обошелся в разы быстрее. Да и вообще случился🙃

  • @leonidpodriz4940
    @leonidpodriz49403 жыл бұрын

    Спасибо за информацию! 7:41 - уже давно используют apt вместо apt-get.

  • @t0digital

    @t0digital

    3 жыл бұрын

    Мышечная память, иногда apt пишу, иногда apt-get по-старинке

  • @user-lz3ez3nn4j
    @user-lz3ez3nn4j3 жыл бұрын

    Спасибо за видео

  • @user-sf9nn6dh2q
    @user-sf9nn6dh2q3 жыл бұрын

    круто) спасибо

  • @user-mt7ko5hx7n
    @user-mt7ko5hx7n3 жыл бұрын

    Спасибо. Спас.

  • @veraburak8049
    @veraburak804911 ай бұрын

    лайк, подписываюсь

  • @user-vd8pz6yk3p
    @user-vd8pz6yk3p3 жыл бұрын

    Спасибо! Хороший урок. А можно ли разбить базу pgsql на несколько серверов? Как это сделать? оч интересно)

  • @alexanovoable
    @alexanovoable3 жыл бұрын

    Отличное видео, как всегда. Книжка кстати, тоже отличная - это Бретт Слаткин, видимо третья редакция Effective Python (на русском бумажная только второй редакции доступна, но я все равно купил) - читается очень легко и имеет малый объем каждого совета. Не так пугает, как Бизлевская Книга рецептов к Пайтону.

  • @t0digital

    @t0digital

    3 жыл бұрын

    Да, книжка отличная!

  • @hsbsllc8282
    @hsbsllc82823 жыл бұрын

    Очень полезно 👍

  • @t0digital

    @t0digital

    3 жыл бұрын

    Йеее!

  • @Kukharev1
    @Kukharev13 жыл бұрын

    шикарный монтаж!

  • @t0digital

    @t0digital

    3 жыл бұрын

    спасибо!

  • @Recoshett
    @Recoshett3 жыл бұрын

    Приветствую! Спасибо за видео! На древнем php можно применить) а расскажи про SQL alchemy, там пуллер есть из коробки) А ещё интересно про зоопарк от апача узнать. Hbase, hdfs, zookeeper и т. д. Только не из докера, а как standalone решения ☺️

  • @arkadybagdasarov7306

    @arkadybagdasarov7306

    Жыл бұрын

    в sqlalchemy есть свой коннекшен пул, да, вот только если ты горизонтально увеличишь кол-во приложений - пулы в сумме выжрут весь постгрес лимит

  • @rumartru
    @rumartru3 жыл бұрын

    Спасибо! Эх жалко подробнее не раскрыли проблемы CONN_MAX_AGE в django. Пошел искать....

  • @user-gx6jl6bt4h
    @user-gx6jl6bt4h3 жыл бұрын

    Привет, Алексей! Вопрос об образовательной программе: в этом первом модуле запланирована ли какая-то обратная связь, д/з и т. п. Или это будут просто видео уроки? Спасибо за контент, нравится)

  • @t0digital

    @t0digital

    3 жыл бұрын

    Привет! Первый модуль будет по фундаменту - как работает инет, как строятся веб приложения, из каких кирпичиков состоят, некоторая практика будет, но это не модуль по программированию, поэтому проверки дз на этом модуле не будет. Коммуникация будет обязательно, будут стрим 1 или 2 раза в неделю, где можно будет позадавать вопросы и получить ответы

  • @user-gx6jl6bt4h

    @user-gx6jl6bt4h

    3 жыл бұрын

    Спасибо.

  • @vadskytech2751
    @vadskytech27513 жыл бұрын

    Зачёт!

  • @ssn1975
    @ssn19753 жыл бұрын

    Теперь осталось рассказать как с pgpool работать :)

  • @AlexanderDev
    @AlexanderDev Жыл бұрын

    Спасибо за видео! Если есть возможность, сними, пожалуйста, видео про создание и настройку кластера PostgreSQL с демонстрацией того как туда добавлять новые сервера и удалять вышедшие из строя (всякое же бывает) и чтоб при этом все данные оставались целыми. Если данных надо сохранять очень много, то хотелось бы иметь возможность простым добавлением ещё одного сервера (или пары - для репликации), добавлять физическое место для новых данных. Такое возможно?

  • @yuliyabuynovsky1124
    @yuliyabuynovsky11243 жыл бұрын

    СПАСИБО !!! Ты спас нас. Благодаря этому видео мы снизили нагрузку CPU и сайт "задышал". Postgres нагружал сервер до вечных около 100% (сайт стопорился в ЧНН), теперь около 50% в ЧНН !!!! Спасибо за годный контент.

  • @t0digital

    @t0digital

    3 жыл бұрын

    Йее! Это хороший результат 💪

  • @anti1am3r

    @anti1am3r

    3 жыл бұрын

    @@t0digital для проекта у которого нет ни архитектора, ни DBA, ни разработчиков, видимо.

  • @user-no4jf5uj9q

    @user-no4jf5uj9q

    3 жыл бұрын

    Что за сайт ? Расскажи подробнее, сколько запросов генерил сайт на каждого юзера ? Может не правильно постгрес настроен ?

  • @serhii.chumachenko
    @serhii.chumachenko3 жыл бұрын

    спасибо

  • @user-lg6dt3jf1j
    @user-lg6dt3jf1j3 жыл бұрын

    Спасибо за видео, Алексей! Скажи, а для асинхронных фреймворков pgbouncer актуален? Там и соединение к БД, как правило, тоже асинхронное

  • @m0rtym0rty7

    @m0rtym0rty7

    3 жыл бұрын

    Возник такой же вопрос.

  • @dimak4528

    @dimak4528

    3 жыл бұрын

    Тоже возник этот вопрос

  • @t0digital

    @t0digital

    3 жыл бұрын

    Вопрос не в синхронности или асинхронности запросов, вопрос, умеет ли библиотека доступа к БД делать свой пул. Asyncpg умеет. Если app сервер один и БД сервер один, то в таком случае такого встроенного пулера будет достаточно, если серверов больше, отдельный пулер понадобится

  • @user-lg6dt3jf1j

    @user-lg6dt3jf1j

    3 жыл бұрын

    @@t0digital Спасибо!

  • @danquimby8317

    @danquimby8317

    3 жыл бұрын

    думаю для асинхронных не страшно он просто будет ждать освобождения

  • @namalnikmisartenko8785
    @namalnikmisartenko87853 жыл бұрын

    Прикольная штука! Если что еще крутое заметишь или увидишь Обязательно записывай видос! Мы оценим!) Спасибо!)

  • @nikolaysokolov9027
    @nikolaysokolov90273 жыл бұрын

    Не знал, что для Пайтона стандарт - Постгрес. Спасибо!

  • @nikolaysokolov9027

    @nikolaysokolov9027

    3 жыл бұрын

    @@user-ey7rd9ih4g я про MySQL или Марию DB думал. =)

  • @user-cs6sc5tj1y

    @user-cs6sc5tj1y

    3 жыл бұрын

    Ну Пост сейчас стал шире применяться везде так что вполне себе можно принять такой вариант.

  • @arnowt
    @arnowt3 жыл бұрын

    1. Слышал что есть какие-то с асинхронным скриптами в частности aiopg. Можете рассказать про этот момент. 2. Почему бы не поменять порт ПГ, а ПБ повесить на освободившися порт 5432, чтобы не менять никаких настроек в приложении?

  • @rinaatt
    @rinaatt3 жыл бұрын

    Спасибо за подробное и одновременно простое объяснение. Возник вопрос, есть ли инструмен для PostgreSQL, который позволит работать с двумя инстансами БД? Одна будет мастер, другая реплика. В мастер БД будет всегда запись, а чтение либо с мастера либо с реплики. При этом джанга будет работать с БД через эту "прокси" как с одной БД. Я решал такую задачу, через написание своего роутера, но это гемморойное и довольное глючное решение.

  • @dann1kid

    @dann1kid

    2 жыл бұрын

    Ну просто пишешь два коннектора, затем например через peewee ты передаешь коннектор в конструктор в разных ситуациях (при чтении или при записи) и вот тебе пожалуйста. Хоть 10 инстансов, просто коннекторов больше используй

  • @nikolayfofilov8834
    @nikolayfofilov8834 Жыл бұрын

    По поводу паролей, можно просто взять хэш из таблицы pg_shadow

  • @alexanderraf5553
    @alexanderraf55533 жыл бұрын

    А вот с др. Реляционками, например mssql или mysql как обстоит дело?

  • @sulfur32066
    @sulfur320663 жыл бұрын

    Можешь в одном из своих видео рассказать как правильно настроить storage и пользоваться им, спасибо тебе)

  • @doomymax577

    @doomymax577

    3 жыл бұрын

    Что такое сторадж в вашем понимании?

  • @sulfur32066

    @sulfur32066

    3 жыл бұрын

    @@doomymax577 ну скажем у меня что-то крутиться на сервере heroku, который файлы не хранит, и нужен сторонний storage

  • @doomymax577

    @doomymax577

    3 жыл бұрын

    @@sulfur32066 на хероку есть доп услуги какие-то по подключению базюки или кэша, посмотри я думаю там такое есть

  • @sulfur32066

    @sulfur32066

    3 жыл бұрын

    @@doomymax577 PostgresSQL можно подключить, но на счёт остального пока не в курсе

  • @user-rs5zq9hy4m
    @user-rs5zq9hy4m3 жыл бұрын

    Спасибо! Полезно, пошел применять к проекту)) То есть стоит применять примерно при от 100 одновременных запросах к бд? На счет настройки порта 6432, где его изменять в настройках джанго settings.py: DATABASE['PORT': '6432'] (по умолчанию там пусто)? И это все изменения, дальше в проекте ничего не изменять? Как дела с курсом?

  • @sultanbekbeksultanov4214

    @sultanbekbeksultanov4214

    3 жыл бұрын

    даа, всё верно в settings.py надо поставить PORT:5432 , да его, но по умолчанию у PSQL стоит порт 5432. Если вы поставите новое значение, то оно поменяется

  • @user-rs5zq9hy4m

    @user-rs5zq9hy4m

    3 жыл бұрын

    @@sultanbekbeksultanov4214 спасибо, друг) я так понял опечатка, в первом случае 6432)

  • @artemusenko3546
    @artemusenko354611 ай бұрын

    Спасибо за видос) Такой вопрос. Получается PgBouncer можно доустановить прямо в Docker контейнер с Postgres и Postgres будет работать через PgBouncer?

  • @t0digital

    @t0digital

    11 ай бұрын

    На проде базу в докер не стоит ставить

  • @user-ff5nt6pn1v
    @user-ff5nt6pn1v3 жыл бұрын

    Круто я и не знал что PostgreSQL такое есть.

  • @t0digital

    @t0digital

    3 жыл бұрын

    Ни дня без новых знаний:)

  • @zhuch9277
    @zhuch92773 жыл бұрын

    Блин я надеялся будет про репликацию

  • @Dmitry_Ovchinnikov
    @Dmitry_Ovchinnikov3 жыл бұрын

    не понятно, можно ли оставить доступ по ролям, и будет-ли вообще работать правила в pg_hba?

  • @olegpivovarov9002
    @olegpivovarov90023 жыл бұрын

    Привет! Можешь сделать ролик о создании собственных пакетов и импорте их через pip из локального хранилища? Интересует самый простой малозатратный способ. Вчера поставил Gogs сервер, который не хотел запускаться на винде. Пришлось городить виртуальную машину с убунтой. Как-то всё слишком громоздко получается, хотя казалось бы надо просто подключить модуль.

  • @user-zc3zk8wd8p
    @user-zc3zk8wd8p3 жыл бұрын

    ну ок, я смотрел внимательно и... остался один вопрос - вот мы все это взлетели. Реальных коннектов допустим 100. А в джанге то сколько ставить MAX_CONN_AGE ? есть какие то ориентиры?

  • @user-nq5jf2og6e
    @user-nq5jf2og6e3 жыл бұрын

    Как насчет снять видео на тему программных брокеров сообщений (RabbitMQ, Kafka)? :D

  • @kalik54
    @kalik543 жыл бұрын

    Спасибо за видео! Хотел бы узнать, можешь посоветовать что-либо, для улучшения своих навыков в продумывании архитектуры проектов? То есть, как строить именно грамотную гибкую систему (бэкенд). Если это важно, то юзаю джанго. Есть ли что-то такое, например, просмотр какого то сорта видео, иные ресурсы или это только с практикой набивается?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Посоветовать сложно, но я подумаю. Практика это безусловно. Чтение чужого хорошего кода, кстати, очень поможет в этом. Так же как и работа с чужим плохим кодом впрочем. Хорошая архитектура она ведь для того, чтобы всем было удобно с ней работать, поддерживать, дорабатывать и тд, и чтение чужого кода это как раз то, что нужно для развития этого навыка написания красивого архитектурно выстроенного кода

  • @kalik54

    @kalik54

    3 жыл бұрын

    @@t0digital Большое спасибо, лучше попробовать разобрать такие проекты как фласк или что то явно меньше?

  • @t0digital

    @t0digital

    3 жыл бұрын

    @@kalik54 можно больше, можно меньше, там везде есть чему поучиться

  • @kalik54

    @kalik54

    3 жыл бұрын

    @@t0digital Хорошо, снова большое спасибо)

  • @RusFarFaz
    @RusFarFaz3 жыл бұрын

    подскажите, на чем лучше создавать сайт онлайн школы с видеоуроками, на чем строить? Django, Django-cms или может что-то еще?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Да пофик. На чем нравится, что знаете :)

  • @user-rq5gg2uk3s
    @user-rq5gg2uk3s3 ай бұрын

    Во всех битлиотеках под питон для постгреса есть пул, что в asyncpg , что в алхимии, psycopg

  • @t0digital

    @t0digital

    3 ай бұрын

    Этого недостаточно. Много воркеров

  • @user-el9yn2kn5d
    @user-el9yn2kn5d3 жыл бұрын

    @Диджитализируй!, сними ролик, пожалуйста, про отладку питоновского проекта на удаленном сервере по ssh с venv из vscode или pycharm

  • @nikolaimaslov9432
    @nikolaimaslov94323 жыл бұрын

    Привет! Когда выйдет обучающая программа?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Привет! В августе уже не успеваю смонтировать материалы, выйдет в начале сентября

  • @kalik54
    @kalik543 жыл бұрын

    Очень хотелось бы видеть видео про тесты в пайтоне, стоит ли ждать?)

  • @t0digital

    @t0digital

    3 жыл бұрын

    Да

  • @glebrusinovich5239
    @glebrusinovich52393 жыл бұрын

    Super

  • @user-rg4fs5ys5w
    @user-rg4fs5ys5w3 жыл бұрын

    Будет ли какой-нибудь ролик связанный с бд Oracle? Например чем он хуже/лучше постгрес, какие-нибудь удобные фишки в нем, которых нет в постгрес. Было бы интересно послушать!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Давно не работал с Oracle. Вспоминаю с теплом его, и как субд и как компанию)

  • @user-rg4fs5ys5w

    @user-rg4fs5ys5w

    3 жыл бұрын

    @@t0digital Понял, спасибо большое за ответ!

  • @alexandrvoloshyn8225
    @alexandrvoloshyn82253 жыл бұрын

    Можно ли сравнить PostgreSQL + pgBouncer с Percona server. Использовали ли Вы Percona server в проектах?

  • @t0digital

    @t0digital

    3 жыл бұрын

    перкону не использовал, ничего не могу про неё сказать

  • @rbogdan8980
    @rbogdan89803 жыл бұрын

    Подскажите, а нужен PgBouncer для .NET Core приложений, в которых используются Entity Framework (Npgsql) ? Не могу найти нигде адекватную информацию по такому моему. Или это актуально только для Python и PHP ? Спасибо!

  • @t0digital

    @t0digital

    3 жыл бұрын

    не работал с .NET, надо смотреть, умеет ли он пулить соединения

  • @rbogdan8980

    @rbogdan8980

    3 жыл бұрын

    @@t0digital та что-то не могу найти вменяемой информации на эту тему. Утром создал вопрос на stackoverflow, пока тишина.

  • @user-hi9lb2wr2v
    @user-hi9lb2wr2v3 жыл бұрын

    Привет, можешь сказать, пожалуйста, как опытный питонист, можно ли на питоне, на джанге создавать большие Энтерпрайз проекты, более-менее высокогогруженные, например как маркет озона? До этого писал на php symfony, там можно такие проекты создавать, а джанга я слышал очень плохо масштабируется, было бы интересно узнать что скажет опытный питонист?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Привет, питон это же не только джанга. Сама джанга не лидирует в производительности среди питон фреймворков, да, но не всегда производительность работы софта является приоритетом, чаще приоритет в скорости разработки софта. Узкие горлышки можно потом переписать на асинхронных фреймворках или вообще не на питоне.

  • @MrOnlineCoder
    @MrOnlineCoder3 жыл бұрын

    А есть ли объяснение почему джанго так "неэффективно" ведет себя из коробки, что приходится юзать дополнительные штуки по типу баунсера? Ведь он же мог сам делать пул соединений

  • @slogic10

    @slogic10

    11 ай бұрын

    Аналогичная мысль сходу.

  • @ruzin-kokoc
    @ruzin-kokoc3 жыл бұрын

    А как сочетается PgBouncer с Асинхронным приложениями (которые разбирались в другом видео)? Если каждый асинхронный запрос требует коннекта к БД, то либо PgBouncer откроет на каждый такой запрос по соединению с БД, либо все асинхронные потоки выстроится в очередь - не?

  • @t0digital

    @t0digital

    3 жыл бұрын

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

  • @ruzin-kokoc

    @ruzin-kokoc

    3 жыл бұрын

    @@t0digital С этим согласен. Возможно этот комментарий больше относится к прошлому видео про Асинхронный код, который работал быстрее синхронного под нагрузкой. Количество коннектов к БД (через pgBouncer или напрямую) может стать проблемой. В середине видео ты поменял 'session' на 'transaction' и было бы неплохо пояснить в чем разница (поставил на паузу и посмотрел все опции, какие есть). Transaction в большинстве случаев может решать, но не всегда. В нашем приложении нам пришлось бы оставить 'session', т.к. мы используем переменные в SQL, и если два разных потока будут затирать значения друг друга - целостность развалится.

  • @yerkebulansuleimenov9351
    @yerkebulansuleimenov9351 Жыл бұрын

    покажи как в АКС кластере это сделать через докер

  • @dmytrokorbanytskyi1586
    @dmytrokorbanytskyi15863 жыл бұрын

    спасибо, не знаете как он с амазоновскими базами работает? На Аврору его можно прицепить или там свои у них оптимизации?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Они пилят своё aws.amazon.com/about-aws/whats-new/2020/04/amazon-rds-proxy-with-postgresql-compatibility-preview/

  • @tsarevnalagushka
    @tsarevnalagushka3 жыл бұрын

    Вот это поворот. Как-то даже не ожидал такого подвоха от django. Интересно, почему не сделали pool из коробки

  • @t0digital

    @t0digital

    3 жыл бұрын

    тоже удивился, когда узнал об этом

  • @user-dy2ei6hl5q
    @user-dy2ei6hl5q3 жыл бұрын

    Подскажите пожалуйста когда информация про курс будет?! С работы ушел , хочу к вам попасть!!! Залайкайте ПОЖАЛУЙСТА!

  • @t0digital

    @t0digital

    3 жыл бұрын

    В начале сент выходит первый модуль

  • @user-dy2ei6hl5q

    @user-dy2ei6hl5q

    3 жыл бұрын

    @@t0digital Хотелось бы узнать подробнее, сколько модулей будет, сколько они ориентировочно будут длиться, не будет ли задержек с выходом следующих модулей, средняя цена модуля,это нужно для того чтобы спланировать полугодие по времени ( не суваться в другие курсы, если заминок не будет) и конечно спланировать финансы...Уверен вы скоро всё это осветите))

  • @Uni-Coder
    @Uni-Coder3 жыл бұрын

    С mysql, похоже, в последние несколько лет везде проблемы. Я начинал разрабатывать на Rust, мне нужна была база данных, я скачал клиента mysql. Полезли такие непонятные проблемы, что аж пришлось на stackoverflow задавать вопрос. В итоге на stackoverflow мне влепили кучу лайков и сказали, что я нашел баг. Через пару дней "баг исправили". Ок, я обновился, а проект всё равно не компилится. Забил на это дело, поставил клиента postgre и всё заработало сразу. Хотя это было года 3 назад, может что-то изменилось. (Оффтоп) А ещё лет 12 назад в узких кругах был широко известен Firebird.

  • @okopyl
    @okopyl3 жыл бұрын

    Пулеры нужны только на Postgre или на любую бд?

  • @rbogdan8980

    @rbogdan8980

    3 жыл бұрын

    В тех бд где не реализован MARS

  • @okopyl

    @okopyl

    3 жыл бұрын

    @@rbogdan8980 буду очень благодарен если подскажете как можно нагуглить такие базы. Не получилось найти :(

  • @rbogdan8980

    @rbogdan8980

    3 жыл бұрын

    @@okopyl MS SQL Server например

  • @samirguseynov1684
    @samirguseynov16843 жыл бұрын

    а где ты такую кружку купил?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Hoff

  • @samirguseynov1684

    @samirguseynov1684

    3 жыл бұрын

    все нашел

  • @samirguseynov1684

    @samirguseynov1684

    3 жыл бұрын

    @@t0digital уже заказал, сагол)

  • @whatrushka
    @whatrushka Жыл бұрын

    Нужно иметь ввиду, что при установке pgbouncer могут обновиться зависимости postgres и следовательно рестартнется postgres (что критично для консистентности данных при большой нагрузке). По возможности надо выбирать конкретный релиз, который затронет наименьшее число других пакетов. Сейчас при установке pgbouncer на это напоролся

  • @rail3213
    @rail32133 жыл бұрын

    Md5 же уже устаревший стандарт хэширования. Сейчас не знаю какие актуальные, но последнее я использовал bcrypt. Если я не прав, аргументируйте, пожалуйста

  • @t0digital

    @t0digital

    3 жыл бұрын

    сейчас в своем коде лучше не использовать md5, да

  • @sonicsp3149
    @sonicsp31493 жыл бұрын

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

  • @aquinary.

    @aquinary.

    3 жыл бұрын

    Потому что pgbouncer - это утилита, которую ставят в систему, а не как pip пакет. То есть это не pypi дистрибутив. С таким же успехом можно спросить, почему в django из коробки не работает redis.

  • @dmitryshu5218
    @dmitryshu52183 жыл бұрын

    Не понимаю почему эти bouncer- концепции де факто не зашиты в бд на уровне интерфейса. Ведь в перспективе роста нагрузки на бд, резиновый пул, всегда лучше статически заданных соединений.

  • @anti1am3r

    @anti1am3r

    3 жыл бұрын

    Я не уверен, что им там место. Обычно пулы соединения используются на уровне приложений. По крайней мере в java/kotlin/netcore.

  • @denisvolkov6946
    @denisvolkov6946Ай бұрын

    Жду видео "Почему тебе не нужен PgBouncer и нужен Odyssey".

  • @Barbarin89
    @Barbarin893 жыл бұрын

    это получается что вроде очереди для бд?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Да, типа того

  • @arthurgoncharuk8193
    @arthurgoncharuk81933 жыл бұрын

    Если использовать asyncpg, то pgbouncer не нужен, поскольку asyncpg имеет собственную реализацию пула соединений. Что ты думаешь на этот счет?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Если 1 application сервер с asyncpg кодом, и 1 сервер БД, то да, отдельный пулер не нужен, встроенного в asyncpg достаточно. Но если серверов с БД несколько или application серверов несколько, то отдельный пулер может понадобиться.

  • @doszhanm6936
    @doszhanm693611 ай бұрын

    Как настроить DATABASES в приложении джанго не показали, пишет что неверный пароль!

  • @t0digital

    @t0digital

    11 ай бұрын

    вангую, что он прав, видимо неверный:)

  • @doszhanm6936

    @doszhanm6936

    11 ай бұрын

    @@t0digital пароль постгреса версный на 1000 %. В джанго есть конфигурация DATABASES называется. Он принимает хост, порт, логин, пароль, имя базы данных постгреса, но теперь-то туда надо вносить данные от pbgouncer. А пароль pbgouncer не работает с этими конфигами, потому что там md5.

  • @t0digital

    @t0digital

    11 ай бұрын

    подключись к pgbouncer из консоли, убедись, что соединение идёт, и те же credentials проставь и в джанге. Проблема не в джанге

  • @doszhanm6936

    @doszhanm6936

    11 ай бұрын

    @@t0digital проблема оказалось в md5. Если в конфиге pgbouncer ставить plain и в файле прописать пароль в открытом виде, то все прекрасно работает. Видимо в 14 версии postgres по умолчанию md5 авторизация отключена. Из-за этого pgbouncer не может авторизоваться на стороне базы данных. Но так ли это на самом деле, не стал уточнять...

  • @doszhanm6936

    @doszhanm6936

    11 ай бұрын

    я свой первый вопрос не правильно поставил, оказывается ошибка была не неверный пароль, а неверный тип пароля.

  • @slogic10
    @slogic1011 ай бұрын

    Почему бы не использовать in-proc пул соединений? Зачем этот внешний промежуточный (и местами глюченный) софт? Почему взяли и так просто сменили режим (session -> transactional) без объяснений? Почему на серваке всего 100 подключений по умолчанию? Насколько его можно поднять?

  • @zakharka3938

    @zakharka3938

    9 күн бұрын

    Если у вас только один процесс работает с базой, то можно обойтись и in-proc пулом. А если у вас несколько процессов (на одном или нескольких хостах), то лучше иметь внешний пул разделяемый между всеми процессами.

  • @bubbletubbe
    @bubbletubbe3 жыл бұрын

    эм, а какова природа того, что постоянно открывается новый коннект к db ? .. смотрится очень странно, это особенность работы python ?

  • @t0digital

    @t0digital

    3 жыл бұрын

    особенность джанги, вернее дефолтной настройки джанги. Асинхронные либы умеют в свой пул (asyncpg напр)

Келесі