PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Какво е новото в PgBouncer 1.6

PgBouncer е лек пул за връзки за PostgreSQL.

PgBouncer 1.6 беше обявен на 1 август 2015 г. В тази публикация в блога ще говорим за основните нови подобрения в PgBouncer.

Основни нови функции на PgBouncer

Зареждане на хеша на потребителска парола от базата данни на postgres

PgBouncer вече позволява зареждане на паролата на потребителя от базата данни с два конфигурационни параметъра, които са auth_user и auth_query .

  • auth_user
    Ако е зададено auth_user, всеки потребител, който не е посочен в auth_file, ще бъде запитан от pg_shadow в базата данни с помощта на auth_user. Паролата на Auth_user ще бъде взета от auth_file. Този параметър може да бъде зададен и за база данни.

  • auth_query
    Този параметър ни позволява да напишем SQL заявка за зареждане на паролата на потребителя от базата данни. Работи под auth_user. Вижте заявката по подразбиране по-долу:

    SELECT usename, passwd FROM pg_shadow WHERE usename=$1

Режимът на обединяване може да се конфигурира както за база данни, така и за потребител

С тази функция, независимо от основния режим на обединяване, клиентите вече могат да се свързват към различни бази данни с един от 3-те режима на обединяване, описани по-долу. Това е приложимо и за потребителите. Например, ако режимът на пулиране е обединяване на сесии, конкретен потребител може да бъде конфигуриран да използва обединяване на транзакции. Това ни дава гъвкавост на ниво база данни и потребителско ниво, за да приложим по-подходящи опции за обединяване.

PgBouncer предоставя 3 режима на обединяване на връзки:

  • Обединяване на сесии
    По време на живота на клиентска връзка, съществуваща сървърна връзка се присвоява на клиента и след като клиентът прекъсне връзката, присвоената сървърна връзка се връща обратно в пула за връзки.
  • Обединяване на транзакции
    В този режим връзка със сървъра не се присвоява на свързан клиент веднага, а само по време на транзакция. Веднага след като транзакцията приключи, връзката се връща обратно в пула.
  • Обединяване на изявления
    Това е подобно на обединяването на транзакции, но е по-агресивно. Бекенд се присвоява всеки път, когато се издава заявка с един оператор. Когато изявлението приключи, връзката се връща обратно в пула.

Ограничения за връзка на база данни и на потребител:max_db_connections и max_user_connections

С тази функция вече можем да контролираме и ограниченията на връзката за база данни/потребителско ниво с двата нови параметъра, които са max_db_connections и max_user_connections .

  • max_db_connections
    Този параметър не позволява повече от посочените връзки на база данни (независимо от пула – т.е. потребител).
    Стойността по подразбиране на този параметър е неограничена.
  • max_user_connections
    Този параметър не позволява повече от посочените връзки на потребител (независимо от пула – т.е. потребител).

Добавете команди DISABLE/ENABLE, за да предотвратите нови връзки

С тази функция PgBouncer има АКТИВИРАНЕ/ИЗКЛЮЧВАНЕ на db; команди за предотвратяване на нови връзки.

  • ИЗКЛЮЧВАНЕ на db;
    Тази команда отхвърля всички нови клиентски връзки в дадена база данни.
  • АКТИВИРАНЕ на db;
    Тази команда позволява нови клиентски връзки след предишно ИЗКЛЮЧВАНЕ команда.

Нов предпочитан DNS бекенд:c-ares

c-арес е единственият бекенд на DNS, който поддържа всички интересни функции:/etc/hosts с опресняване, SOA търсене, големи отговори (чрез TCP/EDNS+UDP), IPv6. Това е предпочитаният бекенд сега и вероятно ще бъде единственият бекенд в  бъдеще.

Конфигурационните файлове имат директива „%include FILENAME“, за да позволи разделянето на конфигурацията на няколко файла

С тази функция PgBouncer има поддръжка за включване на конфигурационни файлове в други конфигурационни файлове.

С други думи, конфигурационният файл на PgBouncer може да съдържа директиви за включване, които определят друг конфигурационен файл за четене и обработка. Това позволява разделяне на голям конфигурационен файл на по-малки и по-управляеми файлове. Директивите за включване изглеждат така:

%include filename

Ако името на файла не е абсолютен път, то се приема като относително към текущата работна директория.

Има още функции, пуснати в тази версия. Можете да посетите страницата на промените на PgBouncer или да проверите списъка по-долу за други подобрения:

  • Показване на remote_pid в SHOW CLIENTS/SERVERS. Предлага се за клиенти, които се свързват през unix сокети и както tcp, така и unix сокет сървър. В случай на tcp-сървър, pid се взема от ключа за отмяна.
  • Добавете отделен конфигурационен параметър (dns_nxdomain_ttl) за контролиране на кеширането на отрицателния DNS.
  • Добавете IP адреса и порта на клиентския хост към application_name. Това се активира от конфигурационен параметър application_name_add_host, който по подразбиране е „изключен“.

Какво е PgBouncer?

PgBouncer е помощна програма за управление на клиентски връзки към базата данни PostgreSQL. Накратко, той поддържа пул за връзки към сървъра на PostgreSQL и използва повторно тези съществуващи връзки. Въпреки че това може да бъде полезно за намаляване на разходите за клиентска връзка, то също така позволява ограничаване на максималния брой отворени връзки към сървъра на базата данни. Може да се използва и за оформяне на трафик като пренасочване на връзки към една или повече бази данни към различни сървъри на бази данни. В допълнение към тях, PgBouncer може да се използва за управление на сигурността на потребител и дори на ниво база данни.

Вижте диаграмата по-долу, която изобразява архитектурата на PgBouncer по по-визуален начин.

В този конкретен пример клиентските приложения са свързани към отделни екземпляри на PgBouncer, където вместо това биха били свързани директно към сървърите на база данни PostgreSQL. Сървърите на бази данни „DB Server 1“ и „DB Server 2“ могат да бъдат независими PostgreSQL екземпляри или могат да бъдат част от клъстер с различни роли (напр. master/replica или write-master/backup-master и т.н.).

Всеки екземпляр на PgBouncer поддържа пул за връзки с определен брой отворени връзки към сървърите на PostgreSQL. Както може да се види от примера, PgBouncers позволява създаване на пулове с връзки към различни бази данни и дори връзки към различни сървъри на бази данни.

За повече информация

Можете да посетите основния уебсайт на PgBouncer: http://pgbouncer.github.io/

Имат хубава страница с често задавани въпроси: http://pgbouncer.github.io/faq.html

Можете да разгледате хранилището на Github на проекта: http://github.com/pgbouncer/pgbouncer


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Формулата на коефициента на корелация на Пиърсън в SQL

  2. [Видео] Ansible и PostgreSQL

  3. dplyr left_join с по-малко от, по-голямо от условие

  4. Възможно ли е да изключите обработката на цитати в командата Postgres COPY с CSV формат?

  5. PostgreSQL:Шест не толкова лесни части