Когда создавать несколько пакетов или задачу потока данных в SSIS?

Прошу прощения, если это глупый вопрос, так как я не могу найти ответ в Google, возможно, потому, что другие люди думают, что это очевидно, но я немного сбит с толку новичок.

Итак, я практикуюсь в создании небольшого хранилища данных. У меня есть следующие пакеты в SSIS: 1. Копирование из оперативной базы данных в архивную базу данных 2. Копирование из архива в промежуточную область 3. Преобразования в промежуточной области и размещение в хранилище данных

Эти пакеты контролируются заданиями в SQL Server.

Я подумал, что можно было бы иметь только один пакет и поместить все 1-2-3 как отдельные задачи потока данных в этот пакет. Я начал задумываться об этом, потому что во всех задачах есть только одна задача потока данных (хотя в самой задаче потока данных происходит много вещей источника-назначения).

Каковы лучшие практики для этого? Когда вы делаете разные пакеты и когда несколько задач потока данных.

Заранее спасибо.


person Kim    schedule 12.08.2014    source источник


Ответы (1)


Это скорее вопрос личного вкуса. Лично я бы предпочел разделить их по нескольким причинам, в том числе, но не ограничиваясь:

  • Если пакет №2 сломается в какой-то момент из-за смещения схемы или чего-то еще, пакет №3 все равно будет работать нормально (по крайней мере, для некоторых таблиц).
  • В команде лучше сохранять компактность, потому что нескольким людям может потребоваться проверить разные пакеты из CVS, чтобы работать над ними одновременно. Это будет просто невозможно, если все будет помещено в одну гигантскую упаковку.
  • Когда хранилище становится достаточно большим (сотни таблиц), часто бывает целесообразно разделить каждый этап между несколькими пакетами - скажем, по одному для каждого источника данных / предметной области. В них легче не потеряться.

Кроме того, большие пакеты SSIS довольно громоздки - я помню, как работал с пакетом, который весит ~ 30 Мбайт, это было настоящей головной болью.

person Roger Wolf    schedule 12.08.2014
comment
Спасибо, это имеет смысл. - person Kim; 12.08.2014
comment
Кроме того, разделившись на несколько пакетов, у вас есть возможность запускать их одновременно (при условии, что у вас разные области внимания). Просто изменив нашу размерную нагрузку с чисто последовательного выполнения пакета на сочетание параллельных контейнеров, выполняющих последовательное выполнение, время загрузки резко сократилось. - person billinkc; 12.08.2014
comment
@billinkc, да, но это не всегда возможно. Например, разные пакеты могут обновлять одни и те же таблицы поиска. - person Roger Wolf; 12.08.2014
comment
Здесь вы бы наложили порядок выполнения пакета посредством последовательного выполнения. Я не оспариваю ваш ответ, просто предоставляю дополнительную информацию о том, почему небольшие узко сфокусированные пакеты хорошо подходят для решения проблем. - person billinkc; 12.08.2014
comment
Строго говоря, в одном пакете также можно запускать несколько одновременных потоков данных :) Хотя это, конечно, было бы заметно менее гибким решением. - person Roger Wolf; 12.08.2014