Перейти к основному содержимому

Подключение PostgreSQL

Минимальная поддерживаемая версия PostgreSQL — 15.

Рекомендации по конфигурации сервера PostgreSQL​

Производительность YouGile при работе с PostgreSQL зависит в первую очередь от объёма данных и интенсивности их изменения, а не от количества пользователей.

Рекомендуемая конфигурация:​

  • Процессор: от 4 ядер с тактовой частотой не менее 3 ГГц;
  • Оперативная память: от 16 ГБ (DDR4 или выше);
  • Дисковая подсистема: быстрый SSD или NVMe (критично для скорости работы с базой данных).

Указанная конфигурация подходит для большинства сценариев использования, включая работу большого числа пользователей при умеренном объёме данных.

Размещение базы данных:​

Наиболее ресурсоёмкая операция — перезапуск YouGile, создающий пиковую нагрузку на чтение данных из PostgreSQL.

  • Если PostgreSQL размещается на отдельном физическом или виртуальном сервере, рекомендуется обеспечить гигабитное сетевое подключение (1 Гбит/с и выше) между сервером YouGile и сервером БД. Это существенно сократит время запуска и перезапуска системы.
  • Если YouGile и PostgreSQL работают на одном сервере, учитывайте суммарное потребление ресурсов обеих систем.

Мониторинг и оптимизация:​

  • Регулярно отслеживайте метрики производительности PostgreSQL (нагрузку на CPU, дисковые операции ввода-вывода IOPS, использование памяти и задержки запросов).
  • При интенсивном использовании (большие объёмы данных с частыми изменениями) может потребоваться индивидуальная настройка параметров PostgreSQL на основе анализа узких мест.

Подключение PostgreSQL, если в текущей базе нет данных​

Чтобы использовать PostgreSQL в качестве базы данных, необходимо в файл conf.json добавить следующий блок:

  "database": {
"account": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
},
"company": {
"master": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
}
},
"userEvents": {
"master": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
}
}
},
  • user — Имя пользователя PostgreSQL, от имени которого будет происходить подключение.
  • password — Пароль пользователя для подключения к базе данных.
  • database — Название базы данных, к которой должно быть установлено подключение.
  • port — Порт PostgreSQL.
  • host — адрес PostgreSQL.

Подключение PostgreSQL, если в текущей базе уже есть данные (миграция существующей базы в PostgreSQL)​

Предварительная подготовка:​

  • Убедиться, что версия PostgreSQL не ниже 15
  • Установить nodejs v20.11
  • В нужной директории выполнить и установить дополнительные пакеты:
    npm init -y
    npm install pg big-json

Важно: при использовании управления пользователями через файл необходимо сделать бэкап и директории database, и самого файла users.csv.

Миграция данных​

Важно: сервер между шагами запускать нельзя — ни до, ни во время миграции. Запускать сервер можно только после того, как оба скрипта миграции завершат работу и в основной conf.json будет добавлен блок подключения к PostgreSQL.

  • Остановить коробку
  • Перейти в каталог tasks/db
  • В каталогах migrate-storage-to-db и migrate-user-events-to-db переименовать и заполнить файл example.conf.json в conf.json
    • В migrate-storage-to-db/conf.json параметр storage — это путь до каталога companies (например, "c:\\yougile\\database\\companies" — укажите актуальный путь)
    • В migrate-user-events-to-db/conf.json параметр storage — это путь до каталога user-events (например, "c:\\yougile\\database\\user-events" — укажите актуальный путь)

Обратите внимание: в Windows пути в файлах конфигурации conf.json необходимо указывать с экранированными обратными слешами (\\).

  • В каждом каталоге (migrate-storage-to-db и migrate-user-events-to-db) нужно выполнить команду node index.mjs
  • Добавить в основной файл conf.json, который лежит в корневом каталоге yougile следующий блок:
  "database": {
"account": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
},
"company": {
"master": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
}
},
"userEvents": {
"master": {
"user": "db-user",
"password": "user-password",
"database": "db-name",
"port": 5432,
"host": "yourhost"
}
}
},
  • user — Имя пользователя PostgreSQL, от имени которого будет происходить подключение.
  • password — Пароль пользователя для подключения к базе данных.
  • database — Название базы данных, к которой должно быть установлено подключение.
  • port — Порт PostgreSQL.
  • host — адрес PostgreSQL.

Примечание: host рекомендуется указывать как "localhost", если база данных находится на том же сервере, где yougile, или же как адрес хоста "yourhost", если база данных находится на другом сервере.

  • Запустить коробку

Пример заполнения migrate-storage-to-db/conf.json и migrate-user-events-to-db/conf.json​

  • migrate-storage-to-db/conf.json:
{
"database": {
"host": "yourhost",
"port": "5432",
"name": "db-name",
"user": "db-user",
"password": "***",
"ssl": {
"rejectUnauthorized": false
}
},
"storage": "c:\\yougile\\database\\companies"
}
  • migrate-user-events-to-db/conf.json:
{
"database": {
"host": "yourhost",
"port": "5432",
"name": "db-name",
"user": "db-user",
"password": "***",
"ssl": {
"rejectUnauthorized": false
}
},
"storage": "c:\\yougile\\database\\user-events"
}

Дополнительная информация о подключении к PostgreSQL​

Количество соединений, необходимых сервису​

YouGile использует встроенный пул подключений к PostgreSQL, поэтому нагрузка на базу оптимизирована самим сервисом.

  • Для стабильной работы требуется в среднем 2–4 активных соединения на один серверный процесс (нод).

  • Использование PgBouncer не является обязательным, так как встроенный пуллер уже обеспечивает эффективное распределение подключений.

  • Если у вас развёрнуты несколько компонент (AN, CN, UE), каждая из них создаёт свой собственный пул соединений, независимый от других модулей.

Таким образом, итоговое количество подключений будет зависеть от количества нод и используемых компонентов.

Какой режим PgBouncer необходим для работы с YouGile?​

Если вы планируете использовать PgBouncer поверх PostgreSQL, необходимо учитывать особенности работы YouGile.

YouGile поддерживает работу через PgBouncer только в режиме session pooling