GithubHelp home page GithubHelp logo

flexberry / flexberry.pgbouncer.sample Goto Github PK

View Code? Open in Web Editor NEW
1.0 8.0 1.0 9.37 MB

License: MIT License

Dockerfile 0.33% Batchfile 0.15% C# 51.34% JavaScript 35.33% HTML 0.63% Less 0.69% Handlebars 9.96% Shell 1.57%
pgbouncer postgresql sample

flexberry.pgbouncer.sample's Introduction

Flexberry.PgBouncer.Sample

Назначение

Репозиторий предназначен для демонстрации работы PgBouncer в приложении Flexberry. PgBouncer - это сервис для организации connection pooling к экземпляру PostgreSQL.

Структура

Приложение состоит из:

  • PgBouncer - сервис, обеспечивающий connection pooling
  • Liquibase - утилита для автоматической инициализации и обновления БД
  • PostgreSQL:
    • appdb - БД приложения
    • auditdb - БД аудита
    • securitydb - БД полномочий
  • Frontend (ember-flexberry)
  • Backend (Flexberry ODataService)

Структурная схема

Запуск

Компоненты приложения упакованы в 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 (см. документацию). Данный подход позволяет PgBouncer использовать отдельных пользователей для подключения к базам данных.

Описание Liquibase

Liquibase - это инструмент для отслеживания, управления и применения изменений схемы базы данных. Является аналогом Git для баз данных.

Liquibase используется в данном проекте для автоматической инициализации и обновления структуры БД. Инициализация и обновление БД происходит при запуске контейнера pgbouncersample/liquibase (см. docker-liquibase-entrypoint.sh). Перед запуском liquibase ожидается запуск контейнера с PostgreSQL через скрипт readycheck (см. описание).

Описание структуры SQL скриптов

Чтобы применить скрипты на нескольких БД, каждой папке присвоен одноимённый контекст: appdb, auditdb, securitydb. Название контекста соответствует базе данных, на которой применяются скрипты (подробнее см. в этом разделе).

Файл SQL/liquibase.properties задаёт базовые настройки для запуска Liquibase. В этом файле задаётся путь к корневому changelog. Корневой changelog SQL/changelog.json задаёт настройки контекстов.

flexberry.pgbouncer.sample's People

Contributors

bratchikov avatar torres6093 avatar turbcool avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

torres6093

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.