Документация Accelera

Установка Segments

Обзор

Модуль Segments позволяет сегментировать клиентов и запускать кампании на расписании с действиями, формировать наборы данных (сегмент, датасет) на основе существующих таблиц. При подключении пользователю системы доступны для выбора весь перечень таблиц и ограниченный список схем в БД - источнике. Ограничение схем настраивает администратор системы.

Поддерживаемые БД:

  • Postgres
  • MSSQL
  • Oracle
  • MySQL
  • Starrocks
  • Greenplum
  • Clickhouse

Требования системы Accelera к базе данных

1. Общие требования

1.1. База данных должна быть одной из поддерживаемых систем:

  • Postgres
  • MSSQL
  • Oracle
  • MySQL
  • Starrocks
  • Greenplum
  • Clickhouse

1.2. Доступ к базе данных должен быть возможен через сеть с минимальными задержками.
1.3. Производительность базы данных должна быть достаточной для обработки сложных запросов и поддержания высокой нагрузки, включая параллельное выполнение запросов в рамках кампаний.

2. Требования к схеме базы данных

2.1. Для работы системы Accelera должна быть выделена отдельная схема (namespace) в БД.

2.2. Схема должна иметь полный набор прав (CREATE, SELECT, INSERT, UPDATE, DELETE) на таблицы, представления и другие объекты, создаваемые Accelera.

2.3. Accelera должна иметь возможность создавать временные таблицы в рамках своей схемы.

3. Требования к tablespace

3.1. Должен быть выделен разумный объем tablespace для работы системы (рекомендуется начать с минимального значения 10 ГБ, с возможностью динамического увеличения при необходимости).

3.2. Tablespace должен поддерживать высокую производительность операций записи и чтения.

3.3. Должна быть реализована система мониторинга доступного объема tablespace с уведомлениями в случае достижения порога заполнения (например, 80% от выделенного объема).

4. Требования к производительности

4.1. База данных должна поддерживать параллельное выполнение запросов.

4.2. Максимальное время выполнения сложного запроса должно составлять не более 1 минуты при номинальной нагрузке.

4.3. Поддержка индексов на колонках, часто используемых в условиях фильтрации, для оптимизации запросов Accelera.

5. Дополнительные требования

5.1. Accelera требует возможности подключения через стандартные драйверы БД (JDBC, ODBC, либо аналогичные, поддерживаемые для данной СУБД).

5.2. Необходим доступ к метаданным схемы (например, информация о структуре таблиц и представлений) для формирования запросов.

5.3. Поддержка транзакций с уровнями изоляции READ COMMITTED или выше.

Рекомендуемые настройки

  • Оптимизация параметров СУБД для работы с большими временными таблицами.
  • Выделение отдельного connection pool для подключения системы Accelera, чтобы избежать конфликтов с другими клиентами базы данных.
  • Учет пиковых нагрузок при настройке параметров сервера БД.

Конфигурация

Распакуйте образы приложения из файла flows_segments_{your_version}.tar.gz следующей командой:

docker load < flows_segments_{your_version}.tar.gz

Создайте файл docker-compose.yaml со следующим содержимым:

version: '3'
services:
  flows_segments:
    image: accelera/flows_segments:latest
    command: npm run start
    container_name: flows_segments
    restart: unless-stopped
		network_mode: "host"
    environment:
			- LOG_LEVEL=info
			- REDIS_CONNECTION=redis://127.0.0.1:6379
			- BROKER_CONNECTION=amqp://guest:guest@127.0.0.1:5672
			- DB_DRIVER=oracledb
			- DB_HOST=localhost
			- DB_PORT=1521
			- DB_USER=ACCELERA
			- DB_PASSWORD=123456
			- DB_NAME=accelera
			- DB_DATAPOOL_SCHEMA=SCHEMA1,SCHEMA2
			- DB_WORKSPACE_SCHEMA=ACCELERA
			- MIN_POOL=0
			- MAX_POOL=180
			- ACQUIRE_CONNECTION_TIMEOUT=600000
			- IDLE_TIMEOUT=0
			- SEGMENTS_SERVICE_NAME=segments-service
			- SEGMENTS_SERVICE_DESCRIPTION=Основная БД для сегментации
            - REDIS_KEY_PREFIX=someprefixname:  (если не нужен префикс, то удалить параметр)

Описание параметров

image

Имя образа, который был распакован на предыдущем шаге, можно узнать командой docker images

container_name

Имя контейнера при запуске, рекомендуется оставить без изменения

restart

Политика рестарта процесса при остановке или ошибке, по умолчанию 'unless-stopped'

network_mode

Подробнее читайте в Особенности подключения к Redis.

Environment

Любой из этих параметров (например, DB_PASSWORD) может быть указан в командной строке при запуске адаптера.

НазваниеОписание
LOG_LEVELУровень логирования, доступны trace, debug, info, warn, error, fatal.
REDIS_CONNECTIONАдрес подключения к БД Redis. Подробнее читайте в Особенности подключения к Redis.
BROKER_CONNECTIONАдрес подключения RabbitMQ.
DB_DRIVERДрайвер подключения к БД. Возможные значения:
pg
pg-native
sqlite3
better-sqlite3
mysql
mysql2
mssql
oracledb
tedious
clickhouse
DB_HOSTХост базы данных
DB_PORTПорт базы данных

Примечание, для драйвера clickhouse порт по умолчанию 9004
DB_USERИмя пользователя для БД
DB_PASSWORDПароль пользователя для базы данных
DB_NAMEИмя БД (или сервиса)
DB_DATAPOOL_SCHEMAСписок схем, откуда Segments будет получать таблицы для дальнейшей работы. Схемы должны быть перечислены через запятую без пробелов.
DB_WORKSPACE_SCHEMAИмя рабочей схемы Segments, в данной схеме будут создаваться временные таблицы (а также таблицы, сохраненные действием Save to table)
MIN_POOLМинимальное значение пула соединений к БД. Если 0 - все idle-соединения буду удаляться.
MAX_POOLМаксимальное значение пула соединений к БД. Рекомендуется указывать по формуле (максимальное количество работающих кампаний)*3.
ACQUIRE_CONNECTION_TIMEOUTТаймаут получение нового соединения из пула в миллисекундах. По умолчанию - 30000, рекомендуется указать побольше (5-10 минут), т.к. задачи сегментации могут работать длительное время.
IDLE_TIMEOUTВремя жизни idle-соединения в пуле. При MIN_POOL=0 никакого влияния не имеет.
SEGMENTS_SERVICE_NAMEНазвание текущего инстанса сегментов (по умолчанию segments-service)
SEGMENTS_SERVICE_DESCRIPTIONОписание текущего инстанса сегментов (по умолчанию segments-service)
REDIS_KEY_PREFIXПрефикс ключа для Redis (Может быть настроен ACL для пользователя и мы можем работать только с ключами с префиксом, например, someprefixname: )==Если добавить этот параметр, то нужно его прописать в env во всех контейнерах, чтоб данные искались и писались по нужному ключу с префиксом!==

Загрузка файлов в сегменты

Модуль сегментации позволяет работать не только с таблицами-источниками, но и с файлами. Для этого в интерфейсе предусмотрен специальный блок File. Для корректной работы необходимо обеспечить общую файловую директорию между модулями backoffice и segments.
Пример настройки:
Допустим, что общая директория на вашем диске - /opt/accelera/uploads.

Настройте volume в backoffice и segments следующим образом:

version: '3'

services:
  flows_backoffice:
    ...
    volumes:
      - /opt/accelera/uploads:/usr/share/uploads
  flows_segments:
    ...
    volumes:
      - /opt/accelera/uploads:/usr/share/uploads

Запуск

Для запуска файлового адаптера используйте следующую команду:

docker-compose -f {путь к вашему docker-compose файлу} up

Получить доступ к логам и проверить работоспособность адаптера можно командой

docker logs -f flows_segments

Остановка

Для остановки адаптера используйте команду:

docker-compose -f {путь к вашему docker-compose файлу} down

Запуск нескольких копий приложения

Accelera Segments имеет возможность запускаться в нескольких копиях для лучшей производительности и отказоустойчивости. Конфигурация для всех копий должна быть одинакова. Система автоматически распределяет задачи между копиями Accelera Segments в зависимости от его нагрузки. На схеме такой способ подключения выглядит следующим образом:

Для запуска нескольких копий добавьте конфигурацию deploy в ваш compose-файл:

version: '3.3'

services:
  flows_segments:
    image: cr.yandex/crpc86n7lgg1287s01rq/flows_segments:2.2.0
    container_name: flows_segments
    restart: unless-stopped
		deploy:
			mode: replicated
			replicas: 2
    env_file:
      - creds.env

Параметр replicas регулирует количество копий приложения.

Подключение к разным БД

Модуль сегментов может быть подключен к 2м различным БД, для этого нужно использовать дополнительный инстанс Accelera Segments с указанием другого имени и описания сервиса.

При запуске одного экземпляра без указания параметров SEGMENTS_SERVICE_NAME и SEGMENTS_SERVICE_DESCRIPTION у вас будет запущен сервис сегментов с именем segments-service и таким же описанием. При создании сегментов в интерфейсе пользователи будут видеть только этот вариант соединения:

При запуске дополнительного инстанса Accelera Segments с другим названием сервиса в интерфейсе появится дополнительное соединение:

Схематично такое соединение выглядит следующим образом:

Пример настройки compose-файла для запуска двух сервисов:

version: '3.3'

services:
  flows_segments_1:
    image: cr.yandex/crpc86n7lgg1287s01rq/flows_segments:2.2.0
    container_name: flows_segments_1
    restart: unless-stopped
		network_mode: "host"
    env_file:
      - creds_db_1.env
  flows_segments_2:
    image: cr.yandex/crpc86n7lgg1287s01rq/flows_segments:2.2.0
    container_name: flows_segments_2
    restart: unless-stopped
		network_mode: "host"
    env_file:
      - creds_db_2.env

Файл creds_db_1.env:

LOG_LEVEL=debug
BROKER_CONNECTION=amqp://guest:guest@127.0.0.1:5672
REDIS_CONNECTION=redis://127.0.0.1:6379
DB_DRIVER=oracledb
DB_HOST=127.0.0.1
DB_PORT=1521
DB_USER=ACCELERA
DB_PASSWORD=accelera
DB_NAME=XEPDB1
DB_DATAPOOL_SCHEMA=ACCELERA
DB_WORKSPACE_SCHEMA=ACCELERA
MIN_POOL=0
MAX_POOL=180
ACQUIRE_CONNECTION_TIMEOUT=600000
IDLE_TIMEOUT=0
SEGMENTS_SERVICE_NAME=segments-1
SEGMENTS_SERVICE_DESCRIPTION=Первый сервис segments

Файл creds_db_2.env:

LOG_LEVEL=debug
BROKER_CONNECTION=amqp://guest:guest@127.0.0.1:5672
REDIS_CONNECTION=redis://127.0.0.1:6379
DB_DRIVER=oracledb
DB_HOST=127.0.0.1
DB_PORT=1521
DB_USER=ACCELERA_2
DB_PASSWORD=accelera_2
DB_NAME=XEPDB1
DB_DATAPOOL_SCHEMA=ACCELERA
DB_WORKSPACE_SCHEMA=ACCELERA
MIN_POOL=0
MAX_POOL=180
ACQUIRE_CONNECTION_TIMEOUT=600000
IDLE_TIMEOUT=0
SEGMENTS_SERVICE_NAME=segments-2
SEGMENTS_SERVICE_DESCRIPTION=Второй сервис segments

Запустите командой docker-compose оба ваших инстанса segments, убедитесь, что в интерфейсе видно оба подключения к разным БД.

На этой странице