.Сетка против ЕРИП: что должно быть использовано для служб SSIS?



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

567   12  

12 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

мои аргументы за то, чтобы не использовать SSIS:

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

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

  • спокойного потоков данных, использовать HTTP-кэширования.

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

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

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

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

  • SSIS не версия легко, в отличие от службы REST.

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

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

  • инструмент неуклюжий и ненадежный.

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

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

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

  • код-это король.

в конечном счете, я вижу SSIS как реликвию Enterprise IT. Я хотел бы спросить: "будет ли Google использовать SSIS?- А как еще можно решить эту проблему? Думайте нестандартно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вручать Ошибки, Электронная Почта Тревоги.

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

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

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

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

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

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

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

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

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

Comments

    Ничего не найдено.