Подтвердить что ты не робот

Преимущества использования пакетов SSIS над хранимыми процедурами?

Если я смогу выполнить требуемые требования ETL с помощью хранимых процедур, любые преимущества использования пакетов SSIS? Мой материал ETL не является чем-то большим.

Мне нравится использовать старую технологию. Мне нравится SQL. Старая технология не является устаревшей, поскольку хранимые процедуры не исчезнут в ближайшее время.

4b9b3361

Ответ 1

Если ваш ETL в основном E и L, с очень маленьким T, и если вы можете написать свои SP, чтобы они не полагались на курсоры, тогда переход на SP-only, вероятно, был бы прекрасен.

Для более сложных процессов, особенно тех, которые связаны с тяжелыми преобразованиями, медленно меняющимися размерами, поиском интеллектуального анализа данных и т.д., SSIS имеет три преимущества.

Во-первых, он эффективно управляет памятью, что может привести к большим улучшениям производительности по сравнению с T-SQL.

Во-вторых, графический интерфейс позволяет вам создавать большие, сложные и надежные преобразования намного легче, чем ручной T-SQL.

И в-третьих, SSIS позволяет вам более легко взаимодействовать с дополнительными внешними источниками, что может быть очень удобно для таких вещей, как очистка данных.

Ответ 2

Я жил в стране хранимой процедуры ETL для хранилища данных с несколькими терабайтами SQL Server. Это решение было принято еще в 2001 году, когда .NET был 1.0, поэтому VB6 был альтернативой языку программирования, а SSIS еще не было - это DTS. Я могу сказать вам, что были преимущества и недостатки, как и все.

Некоторые соображения:

  • Если каждый в вашей команде понимает SQL, легко вникнуть в хранимые procs. SQL - это широко известный навык, который может принести пользу, если у вас много авторов/читателей ETL. Вы должны быть более чем случайным пользователем SSIS, чтобы понять, что он делает. Графический поток высокого уровня хорош для документации, но если кому-то нужно попасть в кишки, им лучше знать SSIS.
  • SQL - это боль для модуляции. Если вы используете UDF, вы понесете огромный успех. Вы будете писать аналогичный код в нескольких местах, и вы будете ненавидеть себя за это, но часто в сценариях ETL производительность короля. SSIS поможет вам модулизовать и разложить свои задачи.
  • Не ожидайте, что сможете легко использовать контроль источника с помощью SSIS. SQL - нет проблем. SSIS использует ужасные XML файлы, которые можно проверить, но удача отличается от предыдущих версий, чтобы увидеть, что изменилось и когда.
  • Вам нужно подумать о своих SP в модульном ключе, хотя трудно сделать их такими же модульными, как вам хотелось бы. Используйте временные таблицы для обработки вашей обработки. Поместите индексы на эти временные таблицы перед их использованием. Не пытайтесь делать слишком много сразу. Прокомментируйте все.
  • Если вы используете курсоры, вы делаете это неправильно. Не бойтесь цепочки в каком-то внешнем консольном приложении, которое вы написали на выбранном вами языке, чтобы сделать некоторые вещи, которые SQL просто не вырезали.

BTW - после того, как я покинул эту компанию, они, наконец, обновили базу данных с SQL 2000 до 2008 года и медленно перешли от хранимых процедур к SSIS. В моей новой компании у нас есть SSIS, но после ее использования мы все согласились с тем, что наш пользовательский .NET ETL лучше подходит для наших целей. Каждый идет своим путем. Решение должно балансировать обслуживание и производительность, а также набор навыков вашей команды и набор навыков в вашем районе.

Ответ 3

Я нахожусь в середине избавления от наших пакетов SSIS и использования хранимых процедур. Для нас хранимые проры значительно лучше: 1) Они намного проще в обслуживании, нам не нужны ставки, не нужно создавать проекты и импортировать пакеты в ставки, тем меньше шагов для простого изменения хранимых процессов. 2) Все наши текущие пакеты в основном обрезают данные в таблице, а затем повторно заполняются из нескольких других таблиц на одном сервере с прямыми сопоставлениями. Очень просто Вставить/выбрать SQL для записи. 3) Они работают намного быстрее. У нас нет курсоров, нет циклов, просто прямой SQL. 4) Нам не нужно тратить все наше время, щелкая правой кнопкой мыши и работая в маленьких приложениях ставок, пытаясь следовать логике. Мы все знаем базовый TSQL и этого достаточно для наших задач.

Ответ 4

Я бы сказал, что это зависит от того, что вы делаете. Однако, по моему опыту, комната для улучшения с пакетами SSIS огромна. Мы увидели 10-кратное улучшение нашей среды хранилища данных, когда мы взяли некоторые тяжелые удаленные хранимые процедуры и поместили их в пакеты SSIS. Использование памяти SSIS (в этой ситуации в любом случае) внесло всю разницу.

Я хочу повторить, что важно знать, что вы делаете. Например, оператор SQL будет традиционно превосходить поток данных SSIS, когда преобразование данных является таблицей-таблицей на том же сервере.

Лучше всего выбрать SP или два и создать их в SSIS и проверить их оба.

Кажется, что ответ для всех вопросов SQL начинается с, это зависит...

Ответ 5

Мы комбинируем комбинированный метод, чтобы получить лучшее из двух миров: Мы используем SSIS для получения данных из внешних источников и параллельно загружаем их в промежуточную базу данных Затем мы используем пакеты SSIS для организации конвейеров и запускаем соответствующие SP внутри потока управления.

Любая логика преобразования инкапсулируется в SP, поскольку потоки данных трудно управлять/изменять и не дает каких-либо существенных преимуществ: 1) Легче изменить и устранить проблему, чем пакет 2) Нет способа легко повторно использовать компоненты в SSIS, кроме вызова внешних пакетов 3) SVN diff SP работает, diff из пакета SSIS ужасен:)

Кроме того, мы используем SSIS для параллельного запуска SP, чтобы повысить общую производительность.

Ответ 6

Я пробовал некоторые функции в SSIS, и я не был доволен ими. Я заявил с потоком данных, и я был не очень доволен производительностью, которую я видел. В результате я разработал пакеты SSIS, которые управляли потоком задачи sql, каждый из которых выполнял хранимую процедуру.

Это убедило, что SQL-сервер сделал большую часть E, T и L. Я думаю, что когда вы используете компонент потока данных, данные фактически переходят с SQL-сервера на компьютер, запускающий пакет, что делает его не столь эффективным.

Сказав это, я думаю, что я бы попытался оптимизировать Dataflow thingy (с тех пор как я работал над ним), если мне пришлось взаимодействовать с сторонними приложениями/базами данных/системами DW.

Ответ 7

Я не вижу никаких очевидных технических ограничений. Хранимой процедуре может быть труднее следовать, чем пакет SSIS для сложных операций ETL, но это не будет верно для каждого сценария. Я также обнаружил, что пакеты (SSIS и DTS) более легко распознаются как "задания" - хранимые процедуры, выполняемые запланированными заданиями, часто игнорируются разработчиками, потому что они не могут видеть запланированные задания.

Тем не менее, я видел ETL, выполняемый хранимыми процедурами и пакетами DTS/SSIS, и до тех пор, пока хранимая процедура не является большой проблемой запутанного кода. Я не видел, чтобы один метод работал лучше или надежно, чем другой (но тогда я не видел хранимых процедур, выполняющих сложный ETL).

Ответ 8

  • Производительность будет быстрее обычной. Не нужно создавать сложную временную таблицу, курсор, индексирование для извлечения данных.

  • Очистка данных - это преимущество SSIS.

  • Инкрементное обращение возможно только в ssis.

  • Мы можем создать файл конфигурации пакета и развернуть его на любой сервер. Пользователь может предоставить информацию о сервере и войти в систему.

  • Графический интерфейс пользователя.

  • Ведение журнала, обработка ошибок лучше всего в ssis.

Ответ 9

В SSIS отсутствуют некоторые базовые функции, у него нет пакета типа Informatica, который позволяет разработке с выражением SQL работать с сырыми текстовыми файлами, а SQL-серверу не хватает журнала регистрации ошибок DML, например Oracle. Я действительно думал, когда Microsoft объявила о добавлении оператора Merge, который, конечно же, будет реализовывать ведро ошибок, которое является одной из его наиболее важных функций. Обработка ошибок на линейном уровне важна, и если вы используете инструкцию SQL для добавления партий данных, если одна запись завершилась неудачей, откатывается вся партия.

Ответ 10

Я видел некоторые высокие результаты за счет использования SSIS, особенно хорошо, если у вас есть хранимые процедуры, которые используют связанные серверы, поскольку это использует больше вычислительной мощности, а связанные серверы имеют тенденцию перетаскивать всю таблицу в память, прежде чем ограничивать строки необходимых для соединения. У нас была хранимая процедура, которая выполняла 7 + часов для запуска, я разбил это на данные с каждого сервера, а затем настроил локальный источник данных для каждого в SSIS, чтобы обработка выполнялась локально для каждого источника данных, который был связан с подключенным сервером, теперь мне требуется 6 минут, я бы сказал, что это огромный выигрыш.

Caralyn

Ответ 11

Для небольших проектов, если у вас есть солидные навыки работы с SQL и понимание бизнес-требований, продолжайте!

В противном случае, если вы столкнетесь с комплексом извлечения данных, тяжелые задачи преобразования. SSIS или другой инструмент ETL будет достаточным.

веселит

Ответ 12

Для передачи данных между серверами SQL используется SSIS выше SP Вы можете легко столкнуться с улучшением фактора 10, как указано выше Мы перешли от 6-7 часов к более управляемым временным рамкам, вставив SP в пакет SSIS

С другой стороны: SSIS - это в основном куча XML файлов, которые можно манипулировать/использовать разными способами (например, для документации)

Ответ 13

Я работаю с SQL Server с версии 6.5 - это долгое время! И по моему опыту большинство ETL достаточно просто, что T-SQL работает отлично и не только работает, но работает очень хорошо - быстрое, надежное, простое структурированное программирование. Я считаю, что все, что можно сделать в SSIS, может быть сделано в T-SQL кем-то, кто знает, что они делают.

Большинство людей, которые являются тяжелыми про-SSIS, снова по моему опыту, являются неопытными разработчиками, которые выросли с помощью графических инструментов и не знают, как программировать.