В какой-то момент я выполнил некоторые архитектурные работы над продуктом, известным как Acumen Advantage , у которого есть менеджер склада, который делает это.
Основная стратегия для этого состоит в том, чтобы иметь управляющую БД со списком sprocs и их зависимостей. На основе зависимостей вы можете выполнить Topological Sort , чтобы дать им команду на выполнение. Если вы сделаете это, вам нужно управлять зависимостями - все предшествующие элементы хранимой процедуры должны завершиться до ее выполнения , Сам по себе запуск sprocs в нескольких потоках не приведет к этому сам по себе.
Реализация этого означала, что большая часть функциональности служб SSIS была выбита из головы и реализован другой планировщик. Это нормально для продукта, но, вероятно, излишним для системы на заказ. Таким образом, более простое решение:
Вы можете управлять зависимостями на более грубом уровне, организовав ETL по вертикали по измерению (иногда известному как Subject Oriented ETL ), где один пакет SSIS и набор sprocs извлекают данные из извлечения. вплоть до производства таблиц измерений или фактов. Обычно размеры будут в основном разрозненными, поэтому они будут иметь минимальную взаимозависимость. Там, где есть взаимозависимость, сделайте процесс загрузки одного измерения (или таблицы фактов) зависимым от того, что ему нужно в восходящем направлении.
Каждый загрузчик становится относительно модульным, и вы по-прежнему получаете полезную степень параллелизма, параллельно запуская процессы загрузки и позволяя планировщику SSIS работать с ним. Зависимости будут содержать некоторую избыточность. Например, таблица ODS может не зависеть от завершения загрузки измерения, но сам по себе вышестоящий пакет переносит компоненты прямо в размерную схему до ее завершения. Однако на практике это вряд ли является проблемой по следующим причинам:
- Процесс загрузки, вероятно, имеет множество других задач, которые могут быть выполнены в это время
- Наиболее ресурсоемкими задачами почти наверняка будут загрузки таблиц фактов, которые в основном не будут зависеть друг от друга. Там, где есть зависимость (например, сводная таблица, основанная на содержимом другой таблицы), этого нельзя избежать в любом случае.
Вы можете создать пакеты служб SSIS, чтобы они забрали всю свою конфигурацию из файла XML, и местоположение можно было указать в виде переменной среды. Подобные вещи могут быть довольно легко реализованы с помощью систем планирования, таких как Control-M.
Это означает, что модифицированный пакет служб SSIS может быть развернут с относительно небольшим ручным вмешательством. Производственному персоналу могут быть предоставлены пакеты для развертывания вместе с хранимыми процедурами, и они могут сохранять файлы конфигурации для каждой среды без необходимости вручную настраивать конфигурацию в пакетах служб SSIS.