У партнеров моего заказчика данные храняться в разных базах, или файлах (
postgresql,
oracle,
mssql,
mysql,
dbf,
csv), или дается доступ к данным через API. Мне нужно получить данные, преобразовать их, отправить в базу заказчика и еще проанализировать.
Если напрямую, то решение кажется следующим: с помощью протокола репликации или тригиров получаем данные из баз для SQL, для файлов можно воспользоваться чем-то наподобии diff. Затем данные преобразуются в вид, которых хранится у заказчика и заливаются в базу заказчика. Анализ производится с помощью
pandas,
apach pig или чего-нибудь другого.
Я нашел информацию, что существуют всякого рода
Enterprise Application Integration и
Enterprise Service Bus, также сущестуют решения для репликации разных типов баз данных как
SymmetricDS.
Немного посмотрев на
Talend,
Mule ESB,
Fuse ESB,
Apache ServiceMix,
Zato я понял, что порог вхождения в них достаточно большой.
Подумав, я составил требования к системе:
- Синхронизация данных
- Синхронизация транзакционнх SQL баз с использованием репликации или триггеров
- Обработка файлов и API
- Хранение копии данных в системе для анализа
- Целостность данных
- Ссылочная целостность
- Транзакционность
- Преобразование данных
- Простое добавление новых партнеров
- Настройка преобразование данных партнера к данным заказчика
- Применение изменений на лету
- Мониторинг здоровья сервиса
- Расширяемость
- Безопастность
- Использование шифрования
- Простое добавление ноды на стороне партнера для проксирования при отсуствии прямого доступа к базе
- Анализ данных с помощью pandas, apache pig или другого
Возможно кто-нибудт подскажет максимально простое решение максимально покрывающее мои требования или кто-нибудь может рассказать/подсказать как с помощью какого-нибудь конкретного инструмента можно решить/облегчить решение задачи?