Интеграция через общую базу данных
Ранее рассматривали разные типы интеграций:
- Типы интеграции систем. Преимущества и недостатки
- Интеграция через API. Кратко
- Очереди сообщений. Основные понятия
- gRPC – краткий обзор
- Интеграция через файловый обмен
(расширенная подборка в материалах)
Рассмотрим еще один способ, менее популярный: интеграция через общую БД. Этот подход имеет свои преимущества, но не всегда является лучшим выбором из-за сложностей с согласованностью данных и производительностью.
При интеграции через общую БД несколько систем используют одну и ту же БД для обмена данными.
Принцип работы
- Все подключено к одной БД, её используют для обмена информацией
- Системы читают и пишут данные напрямую через SQL-запросы или с помощью API, коннекторов
Особенности
- Системы должны согласовать структуру данных (схему БД), чтобы все понимали формат и правила работы с данными
- Одновременный доступ разными системами может приводить к блокировкам. Чтобы избежать, используются механизмы синхронизации транзакций
- Изменения сразу видны другим системам
Способы интеграции
Коннекторы (Database Connectivity, DBC)
Например, ODBC/JDBC-драйверы.
- JDBC — интерфейс для подключения Java-приложений к БД, позволяет выполнять SQL-запросы
- ODBC — универсальный интерфейс для подключения приложений на разных языках к БД, также использует SQL-запросы
Коннекторы работают как посредники между приложением и БД. Принимают запросы от приложения, преобразуют их в SQL-команды для БД, выполняют запросы и возвращают результат.
API
Приложения взаимодействуют с БД через REST или SOAP API. Отправляют HTTP-запросы, которые преобразуются в SQL-запросы внутри базы.
Прямое подключение
- Через SQL-запросы: Прямое подключение через SQL-запросы: приложение отправляет SQL-команды напрямую в базу данных по сети (например, через TCP/IP), без использования посредников.
- Через сетевые драйверы: Используются драйверы для установления связи с БД по сети (например, TCP/IP), затем приложение отправляет SQL-запросы напрямую.
В обоих случаях идет работа с БД напрямую. Но сетевые драйверы (например, для PostgreSQL или MySQL) обеспечивают управление сетевым соединением.
Через представления
Создаются виртуальные таблицы (представления), которые объединяют данные из нескольких таблиц.
- Приложения не изменяют основные таблицы
- Они выполняют SQL-запросы к представлениям, как к обычным таблицам
- Выдаются права на чтение нужных представлений
Когда использовать общую БД
- Интеграция внутренних систем (например, системы из одной корпоративной платформы: ERP, CRM и т.д.)
- Для объединения данных из разных источников
- Нужно сразу видеть изменения в системе
- Для минимизации повторного хранения данных
- Для интеграции Legacy-систем или самописных систем
Пример работы
В компании несколько систем: интернет-магазин, система управления складом и бухгалтерия.
- Интернет-магазин: клиенты оформляют заказы, данные сразу записываются в общую БД.
- Система управления складом: получает информацию о заказах из той же БД и обновляет количество товара на складе.
- Бухгалтерия: автоматически подтягивает данные о продажах из общей БД для учёта финансов.
Все системы работают с одной БД, не нужно синхронизировать данные между ними, данные актуальны во всех системах.
Как обеспечить безопасность
- Шифрование данных (например, с использованием AES) и трафика (например, TLS/SSL)
- Многофакторная аутентификация (MFA) и использование OAuth
- Логирование и мониторинг
- Изолированные схемы или таблицы, разделение на уровни доступа, где каждая система имеет доступ только к своим данным, а не ко всей БД
- Резервные копии и план восстановления
Недостатки
- Проблемы с согласованностью, если несколько систем одновременно изменяют данные
- Увеличение нагрузки -> снижается производительность
- Изменения в структуре данных требуют координации между всеми системами
- Уязвимость к атакам
- Сложнее поддерживать и обновлять систему из-за её зависимостей
Подборка материалов по теме интеграция через общую БД
- Основы интеграции информационных систем
- Почему интеграционная БД — это отстой
- Архитектура приложений и интеграций: гайд по основным понятиям простыми словами
- Современные стандарты информационного взаимодействия систем
- Простой пример JDBC для начинающих
- Две альтернативы JDBC
- PostgreSQL и JDBC выжимаем все соки
- Как подружить ClickHouse и Power Bi
- ETL и коннекторы к источникам данных: российские реалии
- Как подключиться к базе из запроса в PostgreSQL
- Коннекторы и API
- Общая информация о ODBC и Connector/ODBC
- Legacy-системы
- Legacy: поддерживать нельзя переписать
- Доктор, у меня легаси: лечим устаревшие ИТ-системы
Посты из нашего канала по теме интеграций
- SOAP. Краткий обзор
- REST. Краткий обзор
- Ликбез по понятиям: REST, API, HTTP
- REST vs SOAP. Главное
- WebSocket: что это, когда следует использовать и какие преимущества дает
- Apache Kafka
- Kafka vs RabbitMQ: сравнение по пунктам
- Основы RabbitMQ – что нужно знать аналитику
- Способы асинхронного взаимодействия в API
- gRPC vs REST: сравнение по пунктам
- JSON-RPC: что это такое и чем отличается от REST
- GraphQL: основные понятия
- GraphQL vs REST: сравнение по пунктам
- Sync vs Async: синхронное и асинхронное взаимодействие