Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/flexberry/flexberry.pgbouncer.sample
https://github.com/flexberry/flexberry.pgbouncer.sample
pgbouncer postgresql sample
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/flexberry/flexberry.pgbouncer.sample
- Owner: Flexberry
- License: mit
- Created: 2023-06-21T09:32:36.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-10-12T12:16:56.000Z (about 1 year ago)
- Last Synced: 2023-10-13T08:46:34.866Z (about 1 year ago)
- Topics: pgbouncer, postgresql, sample
- Language: C#
- Homepage:
- Size: 9.15 MB
- Stars: 1
- Watchers: 7
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Flexberry.PgBouncer.Sample
## Назначение
Репозиторий предназначен для демонстрации работы PgBouncer в приложении Flexberry. PgBouncer - это сервис для организации `connection pooling` к экземпляру PostgreSQL.## Структура
Приложение состоит из:
- [PgBouncer](https://www.pgbouncer.org) - сервис, обеспечивающий `connection pooling`
- [Liquibase](https://flexberry.github.io/ru/gbt_liquibase.html) - утилита для автоматической инициализации и обновления БД
- PostgreSQL:
- appdb - БД приложения
- auditdb - БД аудита
- securitydb - БД полномочий
- Frontend ([ember-flexberry](https://github.com/Flexberry/ember-flexberry))
- Backend ([Flexberry ODataService](https://flexberry.github.io/ru/fo_orm-odata-service.html))![Структурная схема](./img/структурная%20схема.png)
## Запуск
Компоненты приложения упакованы в Docker:
1. Запустить сборку образов, выполнив скрипт `create-image.cmd` в папке `/src/Docker`.
2. Запустить контейнеры, выполнив скрипт `start.cmd` в папке `/src/Docker`.Исходные файлы образов находятся в папке `/src/Docker/dockerfiles`.
## Описание PgBouncer
PgBouncer - это инструмент, который работает как посредник между приложением и базой данных, осуществляя при этом `connection pooling`. PgBouncer принимает подключения, и "транслирует" их в нужные базы данных, при этом используя соединения из своего пула. Прикладное приложение подключается к `PgBouncer` (порт `6432` по умолчанию).### Подключение к PgBouncer
Для подключения к PgBouncer используется пользователь `pgbadmin`, пароль `12345` (`SERVER=pgbouncer;User ID=pgbadmin;Password=12345;Port=6432;Database=appdb`). Данный пользователь задаётся в файле `userlist.txt` и используется только для подключения к PgBouncer.> Путь к файлу `userlist.txt` можно изменить через параметр `pgbouncer.auth_file`.
PgBouncer выполняет "трансляцию" запросов в нужную БД, используя её строку подключения. Строки подключения можно задать в файле `pgbouncer.ini` (см. [документацию](https://www.pgbouncer.org/config.html)). Данный подход позволяет PgBouncer _использовать отдельных пользователей для подключения к базам данных_.
## Описание Liquibase
[Liquibase](https://flexberry.github.io/ru/gbt_liquibase.html) - это инструмент для отслеживания, управления и применения изменений схемы базы данных. Является аналогом Git для баз данных.Liquibase используется в данном проекте для автоматической инициализации и обновления структуры БД. Инициализация и обновление БД происходит при запуске контейнера `pgbouncersample/liquibase` (см. [docker-liquibase-entrypoint.sh](src/Docker/startup-scripts/docker-liquibase-entrypoint.sh)). Перед запуском `liquibase` ожидается запуск контейнера с PostgreSQL через скрипт [readycheck](src/Docker/startup-scripts/readycheck) (см. [описание](https://github.com/Flexberry/dockerfiles/tree/master/readycheck#readme)).
### Описание структуры SQL скриптов
Чтобы применить скрипты на нескольких БД, каждой папке присвоен одноимённый контекст: `appdb`, `auditdb`, `securitydb`. Название контекста соответствует базе данных, на которой применяются скрипты (подробнее см. в этом [разделе](https://flexberry.github.io/ru/gbt_liquibase.html#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2-%D0%B2-%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%B8%D1%85-%D0%B1%D0%B4)).Файл `SQL/liquibase.properties` задаёт базовые настройки для запуска Liquibase. В этом файле задаётся путь к корневому changelog. Корневой changelog `SQL/changelog.json` задаёт настройки контекстов.