Skip to main content

JDBC-коннектор

Бизнес-требования

Основные требования к фиче:

  • Заменить подключение к БД в диспетчере данных на JDBC-коннектор
  • Единый способ подключения к разным СУБД
  • Возможность добавлять новые коннекторы к любой СУБД прямо из интерфейса системы
  • Возможность управлять параметрами подключения через конфигурацию источника
  • Обеспечить безопасность соединения
  • Сохранить логику взаимодействия с микросервисами бэкенда, просмотр статуса подключения
  • Настроить логирование всех операций с JDBC-коннекторами
  • Коннектор и нагрузка на него никак не должны влиять на производительность системы, при падении драйвера не должен падать основной поток FB

В базовой конфигурации должно быть настроено подключение к следующим СУБД:

  • ClickHouse
  • PostgreSQL
  • MSSQL
  • MYSQL
  • ORACLE

 

Вопросы:

  • Нужны ли типы защиты SSL/SSH?
  • Нужен ли валидатор драйверов? Какие поддерживаем результаты валидации (принято/отклонено или принято/предупреждение/отклонено)
  • Формирование JDBC URL: строка подключения в формате jdbc:<subdb>://<host>:<port>/<database>? 

 

Решение

Архитектурная схема

JDBC.png

Сценарии использования
Use case Зачем нужен
Администратор взаимодействует с веб-интерфейсом
Точка входа для всех операций с драйверами
Интерфейс читает/записывает данные в реестр драйверов
Чтобы показать список доступных драйверов и сохранить новый
Интерфейс передаёт файл драйвера на валидацию
Проверка корректности .jar-файла перед сохранением
Валидатор сохраняет проверенный файл в хранилище
Физическое хранение драйверов на диске
Реестр передаёт список доступных типов драйверов во Слой 2
Чтобы дата-инженер видел только проверенные драйверы при создании источника
BI-разработчик запускает тест подключения
Проверка работоспособности настроек перед сохранением
BI-разработчик создаёт/редактирует конфигурацию подключения
Сохранение параметров: URL, порт, имя БД
BI-разработчик настраивает маппинг таблиц и полей
Определение, какие данные и как загружать из источника
Конфигурация ссылается на хранилище учётных данных
Пароли хранятся отдельно от конфигурации (безопасность)
Конфигурация ссылается на настройки SSL/SSH
Параметры защищённого соединения вынесены отдельно
Модуль тестирования вызывает микросервисы для проверки
Реальное подключение к БД выполняется через ETL-сервисы
Микросервисы читают параметры подключения
Чтобы знать, к какой БД подключаться
Микросервисы читают правила маппинга
Чтобы знать, какие таблицы и поля загружать
Хранилище передаёт учётные данные микросервисам
Логин/пароль для подключения к внешней БД
Настройки SSL/SSH передаются микросервисам
Для защищённого соединения с источником
Микросервисы читают данные из внешних БД через JDBC
Основной процесс ETL-загрузки
Микросервисы записывают данные в ClickHouse
Загрузка данных в БД проекта для аналитики
Микросервисы пишут логи загрузки
Отладка ETL-процессов, мониторинг ошибок
Валидатор пишет логи проверки драйверов
Аудит операций с драйверами, отладка проблем

 

План работ
  • Управление драйверами (бэкенд)
    • Подготовить каталог для хранения jar-файлов драйверов с правами доступа только для сервисов платформы; обеспечить резервное копирование этого каталога
    • Настроить валидатор драйверов: проверить наличие обязательных мета-методов (getTables, getColumns, getImportedKeys, getColumnName, getColumnType, getScale, getColumnCount); обеспечить логирование результатов валидации