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

Интеграция через общую базу данных

Ранее рассматривали разные типы интеграций:

(расширенная подборка в материалах)

Рассмотрим еще один способ, менее популярный: интеграция через общую БД. Этот подход имеет свои преимущества, но не всегда является лучшим выбором из-за сложностей с согласованностью данных и производительностью.

При интеграции через общую БД несколько систем используют одну и ту же БД для обмена данными.

Принцип работы

  • Все подключено к одной БД, её используют для обмена информацией
  • Системы читают и пишут данные напрямую через 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
  • Логирование и мониторинг
  • Изолированные схемы или таблицы, разделение на уровни доступа, где каждая система имеет доступ только к своим данным, а не ко всей БД
  • Резервные копии и план восстановления

Недостатки

  • Проблемы с согласованностью, если несколько систем одновременно изменяют данные
  • Увеличение нагрузки -> снижается производительность
  • Изменения в структуре данных требуют координации между всеми системами
  • Уязвимость к атакам
  • Сложнее поддерживать и обновлять систему из-за её зависимостей

Подборка материалов по теме интеграция через общую БД

  1. Основы интеграции информационных систем
  2. Почему интеграционная БД — это отстой
  3. Архитектура приложений и интеграций: гайд по основным понятиям простыми словами
  4. Современные стандарты информационного взаимодействия систем
  5. Простой пример JDBC для начинающих
  6. Две альтернативы JDBC
  7. PostgreSQL и JDBC выжимаем все соки
  8. Как подружить ClickHouse и Power Bi
  9. ETL и коннекторы к источникам данных: российские реалии
  10. Как подключиться к базе из запроса в PostgreSQL
  11. Коннекторы и API
  12. Общая информация о ODBC и Connector/ODBC
  13. Legacy-системы
  14. Legacy: поддерживать нельзя переписать
  15. Доктор, у меня легаси: лечим устаревшие ИТ-системы

Посты из нашего канала по теме интеграций

  1. SOAP. Краткий обзор
  2. REST. Краткий обзор
  3. Ликбез по понятиям: REST, API, HTTP
  4. REST vs SOAP. Главное
  5. WebSocket: что это, когда следует использовать и какие преимущества дает
  6. Apache Kafka
  7. Kafka vs RabbitMQ: сравнение по пунктам
  8. Основы RabbitMQ – что нужно знать аналитику
  9. Способы асинхронного взаимодействия в API
  10. gRPC vs REST: сравнение по пунктам
  11. JSON-RPC: что это такое и чем отличается от REST
  12. GraphQL: основные понятия
  13. GraphQL vs REST: сравнение по пунктам
  14. Sync vs Async: синхронное и асинхронное взаимодействие

Видео

  1. Способы интеграции систем
  2. SQL. Подключение к базам данных
  3. Integration Style: Shared Database
  4. Введение в интеграции информационных систем
  5. «Общая База Данных» (Shared DB) — Классический интеграционный стиль • Анна Вичугова