.Net vs SSIS: для чего должен использоваться SSIS?

Если у меня есть опция использования .Net и я могу делать преобразования данных в .NET, когда мне понадобится SSIS? Есть ли определенная задача, для которой SSIS будет лучше? Являются ли дополнительные преимущества прозрачности? Это то, с чем мне больше нравится? Каковы наилучшие методы для определения этого?

Ответ 1

хороший вопрос.

если объем передачи данных огромен? вы обрабатываете несколько файлов данных и нуждаетесь в транзакциях (как на уровне файловой системы, так и на уровне базы данных)? вы имеете дело с несколькими источниками данных в разных местах (например, ftp, локальная файловая система, база данных)?

если ответы на выше даны, тогда идите с помощью ssis. в основном .net - это классно с небольшими задачами импорта/экспорта данных, но когда у вас что-то более сложное, ssis - это определенный победитель

Другая вещь, на которую я смотрю - стоит ли писать код .net, когда все доступно внутри ssis. (не ошибаюсь, я люблю кодирование), однако, что-то, что вы кодируете, вам нужно поддерживать: -)

Ответ 2

Я думаю, что время проекта/бюджетные ограничения и использование стандартного инструмента являются одними из самых больших аргументов в пользу использования SSIS. Создание пакета SSIS в большинстве случаев намного быстрее, чем попытка скомпоновать что-то подобное в .NET.

Но с учетом сказанного кажется, что в SSIS есть много болевых точек, которые иногда могут привести к аннулированию этого аргумента. Это было для меня при разработке решения, которое нужно было запускать в разных средах у разных клиентов. SSIS просто выглядела слишком болезненной, чем больше я оценивал ее для проекта. Правильно сконструированное решение .NET проще развертывать, более надежно, гибко, проще понять и может также обеспечить очень хорошую производительность.

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

Ответ 3

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

Ответ 4

Мои аргументы для использования SSIS:

  • Создайте новые продукты, чтобы у них были фиды данных RESTful для отчетности и извлечения, встроенные в план и бюджет проекта, предпочтительно к стандарту, например OData, чтобы другие инструменты могли подключаться прямо.

  • Каналы данных должны извлекать и преобразовывать из систем и каналов восходящего потока по требованию; так что задачи расписания, конфигурация запланированных задач, виртуальных машин задач и персонала для запуска всего этого ненадежного материала планирования отрицаются.

  • Каналы данных RESTful используют кеширование HTTP.

  • Ленты/сервисы/API могут быть легко перемещены в облако упругого облака.

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

  • SSIS не работает с контролем источника и совместной работой.

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

  • SSIS не поддерживает версию, в отличие от службы REST.

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

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

  • Инструмент неудобен и ненадежен.

  • Вы находитесь во власти дорожной карты Microsoft для SSIS.

  • Рассмотрите возможность записи в таблицы/службы, которые поддерживают анализ, отчетность и представления, как только данные поступают в приложение; см. CQRS и другие шаблоны архитектуры приложений.

  • Никогда не используйте Excel в качестве источника данных; обучать сотрудников.

  • Код является королем.

В конечном счете, я вижу SSIS как реликвию Enterprise IT. Мне нравится спрашивать: "Будет ли Google использовать SSIS?" Как еще можно решить проблему? Думайте нестандартно.

Ответ 5

У меня большой опыт работы с SSIS от небольших проектов до больших, сложных ETL. Не вдаваясь в подробности, это мое руководство для вас:

  • Если вы являетесь администратором баз данных, и вы не знакомы с .NET, или если вы являетесь разработчиком, хорошо знакомым с SSIS, то вы можете использовать SSIS для небольшого, простого, довольно простого извлечения, преобразования, загрузки (ETL ) задач.

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

  • Теперь у С# есть поток данных TPL. Простые тесты производительности поставили его перед SSIS. (например, http://mymemoryleaks.blogspot.cz/2013/10/ssis-vs-tpldataflow.html)

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

Ответ 6

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

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

Ответ 7

Я думаю, что главное преимущество - визуально определять всю конструкцию программирования. Любой взгляд на пакет SSIS - это в значительной степени объяснение себя. Тесная интеграция с SSIS с SQL позволяет вам быть частью SQL для резервного планирования и огромного плюса.

Как объясняется каждый, если вы делаете много манипуляций с данными, это хороший инструмент. Это бесплатно, если у вас есть SQL, с которым вы все настроены, и очень легко учиться с помощью VS 2008 BIDS

Ответ 8

Бит поздно, чтобы ответить на этот вопрос, но я надеюсь, что это стоит,

SSIS часто неправильно понимается по сравнению с языком программирования. SSIS является основой, тогда как С# является языком .NET Framework. Я обладаю обширным опытом в области обработки и разработки решения для большого хранилища данных с использованием пакета MSBI, а также разработал крупные веб-сайты (ASP.NET), поэтому я не могу быть предвзятым.

SSIS, если он не используется должным образом, может снизить производительность по пар. Пакеты SSIS имеют три вида преобразования:

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

SSIS работает исключительно хорошо с неблокирующим преобразованием с правильной настройкой потока управления и потока данных. Я использовал его на более крупных (более 2 ТБ хранилища данных), и я могу гарантировать, что это был самый быстрый опыт загрузки. Вы можете проверить блог Microsoft о Мы загрузили 1 ТБ за 30 минут с помощью SSIS и так вы можете

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

Приступая к С#, я согласен, что для выполнения задачи SSIS использует платформу .NET и поставщик данных. Но С#, как язык, более логичен и требует обработки бизнес-логики. Например, если нам нужно запустить exe с другим параметром на основе условия, вы можете написать пакет, который будет рассматривать параметры, а затем логически решить, какой параметр нужно передать для запуска exe файла. Это был бы длительный процесс, чтобы сделать это в SSIS, в то время как я могу сделать это легко в С#, потому что логическая вещь может быть легко выполнена на языке, а не в каркасе.

Теперь речь идет о более удобном подходе к решению проблемы. SSIS - это надежный победитель, загружающий большое количество записей, загружающих данные из источника в пункт назначения, в то время как С# идеально подходит для написания логики. Даже если вам нравится С#, я не буду рекомендовать вам выбирать для выполнения операции ETL (Extract Transform Load) на больших системах хранения данных.

Ответ 9

Как следует из названия, SSIS является системой интеграции. В .net может быть очень трудно обрабатывать коннекторы для разнородных источников данных, таких как excel, teradata, oracle и т.д., А также выполнять обязанности по изящному закрытию этих соединений, сборке мусора, обработке проблем с памятью.

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

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

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

Ответ 10

В основном SSIS имеет много преимуществ, таких как разделение передачи данных из точки A в точку B на более мелкие блоки и отладка их по отдельности, возможность простого доступа к таблицам SQL Server, работа с данными XML, вызовы API с использованием сценариев С# и сохранение данных в БД, чтение БД данные и FTP на удаленном сервере и многое другое.
Помимо множества уже существующих блоков BI, вы также можете создавать свои собственные настраиваемые задачи со своими собственными параметрами и выходными данными.
Надеюсь, я смог добавить некоторые моменты к уже существующим ответам.

Ответ 11

Повседневные задачи, которые используются разработчиком служб SSIS и являются относительно простыми по сравнению с .Net, могут включать:

Сравнение данных между таблицами.

Условное разбиение, блокировка данных на основе некоторой логики.

Преобразование данных, поиск, объединение, объединение, относительно прост в использовании.

Обработка файлов (изменение, проверки).

Обработка ошибок, оповещения по электронной почте.

Контейнеры, циклы FOR/FOReach просты в использовании.

Размещать данные на веб-сервисах легко, используя задачу WebService.

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

Отладка проста в ssis - может быть выполнена на рычаге конатинера, уровне пакета.

Сценарии также могут быть выполнены, если задача недоступна. Кроме того, вы можете настроить свои собственные задачи

Ответ 12

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

Ответ 13

Служба SSIS отлично подходит для приложений BI, вы можете манипулировать данными в рабочей таблице и делать доступными для таблиц DataWarehouse для использования в BI.

Я могу подключиться к SAP, Oracle, чтобы получить информацию о сотрудниках и сделать ее доступной для PowerBI, QlikView и т.д.

Это хороший инструмент, если вы знаете, где и зачем его использовать. Используйте ir, потому что это круто, у вас будут проблемы.

Ответ 14

Службы SSIS обычно используются для ETL (извлечение нагрузки преобразования). Конкретными вариантами использования являются предварительная обработка кубов SSAS (службы анализа SQL Server); и расширенное извлечение с использованием Data Change Capture.

Это может сделать обычную автоматизацию, включая FTP и электронную почту. Существует аспект программирования с использованием скриптовых задач (С# или Visual Basic), поэтому в SSIS есть функциональные возможности, помимо элементов управления...

Пакеты могут быть запрограммированы на использование условного потока управления. Например, выполните определенное задание с понедельника по пятницу, а другое задание - суббота и воскресенье. Или отказаться от выполнения ETL, если определенные условия не выполнены.

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

Он может работать с различными источниками данных и выполнять простое преобразование с помощью элемента управления "Производный столбец". Это против преобразования на исходном сервере (который может быть Oracle или Hadoop для example-, что вы не можете контролировать с помощью локального SQL Server).