Коллеги, добрый день! Помогите решить архитектурную проблему организации правильного надежного пайплайна.
Дано: есть один source данных и два sink'а (две разных таблицы в одном DWH) и работает это через staging.
При этом необходимо обеспечить, чтобы данные в таблицах разбегались как можно меньше, плюс максимально сократить число обращений к источнику.
Разумеется предполагается, что пайплайн может упасть на любой операции: чтение из источника в staging, переливка из staging'а в таблицу 1 или переливка из staging'а в таблицу 2. Например, в ситуации, когда в таблицу 1 данные успели перелиться, а в таблицу 2 – нет, данные разбегутся, но нужно каким-то образом уметь повторять переливку только в таблицу 2 ровно тех данных, что перелились в таблицу 1. При этом по умолчанию сейчас staging очищается перед стартом пайплайна.
У кого-то был опыт в решении подобной задачи? Как правильно это сделать? Меня интересуют не инструменты, а "принципиальная схема" решения.