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

SQL-адаптер

SQL-адаптер доставляет данные из реляционной базы заказчика в платформу: по расписанию выполняет запрос к базе-источнику, превращает каждую строку выборки в событие и передаёт его модулю Flow.

Задача

Типовая ситуация внедрения: события клиентов уже лежат в базе заказчика — транзакции, заявки, обращения, — но система-источник о платформе не знает и дорабатываться под неё не будет. Адаптер решает эту задачу со стороны платформы: сам ходит в базу по расписанию и забирает новое.

Читателю статьи адаптер нужен, когда источник данных — база Oracle, а событиям не требуется доставка в реальном времени: задержка определяется расписанием опроса. Для источников, которые сами отправляют данные, предназначены другие адаптеры Flow.

Что делает

  • Читает базу-источник по расписанию в синтаксисе cron из шести полей, включая секунды. Таймзона расписания фиксирована — московская, настройке не подлежит.
  • Подключается к источнику только на чтение: права на запись в базе заказчика адаптеру не нужны.
  • Читает выборку потоково, без загрузки в память целиком — выборки на миллионы строк обрабатываются с буфером в 150 строк.
  • Ведёт инкрементальное чтение: курсор — максимум выбранной колонки — хранится в Redis, каждая следующая выборка читает только новое. Глубина самой первой выборки задаётся начальным значением курсора.
  • Превращает строку в событие по шаблону: идентификатор клиента, имя события и контекст собираются из колонок строки. Строки без имени события не отправляются.
  • Сохраняет порядок событий одного клиента: маршрутизация по идентификатору гарантирует последовательную обработку в одном потоке.
  • Дополнительно умеет подменять идентификатор клиента по справочнику аудиторий, ограничивать скорость чтения и параллельно записывать выборку в аналитическое хранилище PostgreSQL — таблицу-приёмник при этом заводит заказчик.

Чего не делает

  • Не подключается к другим СУБД: поддерживаемый источник поставки — Oracle. Поддержка другой СУБД (PostgreSQL, MySQL, MSSQL и т.п.) добавляется по запросу — обратитесь к вашему менеджеру Accelera или в техническую поддержку.
  • Не принимает данные снаружи: у адаптера нет входящих подписок и прикладного API, он управляется только собственным расписанием.
  • Не пишет в базу-источник и не меняет её схему — только чтение.
  • Не создаёт таблицы аналитического хранилища: миграций нет, таблицу-приёмник готовит заказчик.
  • Не навёрстывает пропуски расписания: если предыдущая выборка ещё идёт, очередной запуск пропускается и повторно не выполняется.
  • Не обслуживает несколько запросов одним процессом: один экземпляр — один запрос и один поток событий. Несколько источников — несколько экземпляров с разными именами.

Из чего состоит

Внутри адаптера пять частей: планировщик по расписанию, потоковое чтение источника, преобразователь строки в событие, публикация событий для Flow и хранение курсора в Redis. Дополнительно подключаются запись в аналитическое хранилище и сервер метрик с пробами готовности и живости.

Пошаговое развёртывание и полный перечень переменных — в статье Настройка SQL-адаптера.

Ключевые термины

  • Адаптер — модуль, доставляющий данные из внешней системы в платформу в виде событий.
  • Событие — единица данных для сценариев Flow: идентификатор клиента, имя события и контекст.
  • Контекст события — набор полей события, собранный из колонок строки по заданному шаблону.
  • Курсор инкремента — сохранённый максимум инкрементной колонки, от которого продолжается следующая выборка.
  • Полная вычитка — режим без курсора: запрос выполняется как есть при каждом срабатывании расписания.

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