Я пытаюсь смоделировать график, который показывает зависимости процесса ETL.Этот процесс ETL имеет рабочие места, которые зависят от других рабочих мест.Каждое задание имеет входные файлы и выходные файлы.Некоторые выходные файлы отправляются на другой сервер после их создания, который я считаю частью ETL и в котором выполняется вход.
Я изо всех сил пытаюсь смоделировать это, поскольку граф зависимостей не является чистым.Некоторые задания обновляют файлы, что означает, что задание записывает файл с тем же именем, в котором оно прочитало. Я знаю, что разрешение зависимостей обычно выполняется с помощью групп доступности баз данных, но мне кажется, что в этой модели есть вероятность появления циклов.
Таким образом, у меня есть информация:
- ETL JobName
- ETL DAG (здесь нет циклов, по крайней мере, с точки зрения порядка выполнения заданий)
- Список + порядок всех файлов, обрабатываемых как ввод для каждого задания (имя задания / путь к файлу)
- Список + порядок всех файлов, обрабатываемых как вывод для каждого задания (имя задания / путь к файлу)
- Список + порядоквсе файлы, отправленные каждым заданием (имя задания, из / в путь)
Что касается имеющейся у меня информации, вот пример:
- Job2 зависит от Job1
- Job1 читает в FileA.
- Job1 записывает FileA
- Job1 записывает FileB
- Job2 читает в FileA.
- Job2 пишетФайл FileA (предположительно, после его обновления)
- Job2 передает FileA на ServerX.
У нашей команды есть сотни выполняемых работ, которые были написаны годами, и без механического способа узнать, что у нас есть, мы по существу парализованы, чтобы что-то трогать без огромных ручных усилий.
По сути, я хочу сделать эту информацию систематически доступной для поиска, чтобы мы могли знать, что у нас есть и как мы можем ее изменить, не создавая больше проблем.
Одна мысль, которую мне пришлось разорвать, - этопо сути, сохраняйте версию в файле, чтобы при каждом касании он увеличивался, но кажется, что это может усложнить запрос.
Думать, что эта проблема не является уникальной для моей команды, и удивляться, как другиерешено, если они столкнулись с этим.FWIW - Я нахожусь в среде, где установка программного обеспечения может быть проблемой, поэтому общий подход / стратегия, вероятно, был бы более полезным в моем контексте, хотя, если уже есть инструменты, которые могли бы приспособиться к этому, я бы тоже заинтересовался ими.