如果我可以选择使用.Net并且可以在.Net中进行数据转换,我何时需要SSIS?是否有一项SSIS会更好的任务?透明度的额外好处值得吗?这是我更舒服的吗?确定这一点的最佳做法是什么?
答案 0 :(得分:46)
如果数据传输量巨大?你在处理多个数据文件并需要事务(在文件系统级别和数据库级别)?你在不同的位置处理多个数据源(例如ftp,本地文件系统,数据库)?
如果上述答案是肯定的,那么请继续使用ssis。基本上.net很酷,有小型数据导入/导出工作,但当你有更复杂的东西时,ssis肯定是赢家
我看到的另一件事是 - 当ssis中的所有内容都可用时,是否值得编写.net代码。 (不要误会我 - 我喜欢编码)但是,你编码的任何东西,你需要维护: - )
答案 1 :(得分:19)
我认为项目时间/预算限制以及使用标准工具是使用SSIS的一些最重要的论据。创建SSIS包大多数时候比尝试在.NET中编写类似代码的方式更快。
但话虽如此,似乎SSIS有很多pain points,有时可能会使这个论点无效。在开发需要在许多不同客户端的不同环境中运行的解决方案时,它确实为我做了。我对项目进行评估的次数越来越多,SSIS看起来太痛苦了。正确构建的.NET解决方案更易于部署,更可靠,更灵活,更易于理解,并且还可以实现非常好的性能。
恕我直言:考虑将SSIS用于您只需部署到一个或两个内部SQL Server环境的项目。否则,.NET方法将很快变得更具吸引力。
答案 2 :(得分:7)
我想这取决于你在做什么。 SSIS非常强大,就像旧的DTS一样。如果你正在装载很多物品并期望不断变化,我会一路走SSIS。如果您只想加载少量商品而且需要很多客户,我会把它放在代码中。我更喜欢SSIS用于内部ETL过程,但是当我需要将遗留系统中的数据加载到SQL数据库时,我在客户端商店使用.Net。现在正如我之前所说,如果你有很多转换和许多不同的数据孤岛需要加载,我想你会疯狂地在.Net中这样做,我会去SSIS。如果您只有几个要加载的项目,并且它适用于单个应用程序,并且可以作为应用程序的一部分安装在不同的客户端,我会一直使用.Net。我的2美分。
答案 3 :(得分:7)
我不使用SSIS的论点是:
设计绿地产品,使其具有RESTful数据源,用于项目计划和预算中内置的报告和提取,最好是OData等标准,以便其他工具可以直接插入。
< / LI>数据Feed应该从上游系统中提取和转换,并按需提供;因此,计划任务,计划任务的配置,任务运行者VM以及运行所有这些不可靠调度内容的人员都被否定了。
RESTful数据源利用HTTP缓存。
可以轻松地将Feed / services / API移动到弹性云。
SSIS要求找到具有SSIS技能的人,他们喜欢这样做几周。根据我的经验,寻找和保留SSIS开发人员既困难又昂贵,而且发现的人往往低于标准。
SSIS在源代码控制和协作工作方面做得不好。
与微服务和传统代码库不同,SSIS不适合代码重用。
与REST服务不同,SSIS不易编辑。
SSIS不适用于模块化设计和许多小变更的持续部署,它往往是大批量的,带有可怕的版本。
SSIS促进了存储过程的使用,这对SQL作为热点需求很大。赞成对可扩展的无状态中间层提出要求的设计。
工具笨重且不可靠。
您将受到Microsoft的SSIS路线图的支配。
一旦数据进入应用程序,请考虑写入支持分析,报告和视图的表/服务;请参阅CQRS和其他应用程序架构模式。
绝不使用Excel作为数据来源;培训员工。
代码为王。
最终,我将SSIS视为企业IT的遗留物。我想问一下,&#34;谷歌会使用SSIS吗?&#34;问题怎么解决?在盒子外面思考。
答案 4 :(得分:4)
我在从小型项目到大型复杂ETL的SSIS方面拥有丰富的经验。没有详细说明,这是我的指导:
如果您是DBA并且不熟悉.NET,或者您是熟悉SSIS的开发人员,则可以使用SSIS进行小型,简单,相当简单的提取,转换,加载(ETL) )任务。
SSIS非常古怪,有许多陷阱,陷阱,以及可能被认为是彻头彻尾的错误。如果你非常熟悉,这是非常强大的。
C#现在有TPL数据流。简单的性能测试使其领先于SSIS。 (例如http://mymemoryleaks.blogspot.cz/2013/10/ssis-vs-tpldataflow.html)
如果您想做一些微不足道的事情,并且您可以使用.NET技能,请使用.NET而不是SSIS。
答案 5 :(得分:2)
SSIS有许多内置的方法可以从不同的数据源进行转换,您可以将它们串联起来,使其可以非常自定义。它们内置了优化功能,使它们变得快速。
您还可以使用.NET进行自定义转换,以利用SSIS作业的速度和可重复性。
答案 6 :(得分:2)
我认为主要优势是可视化地定义整个编程结构。任何人看看SSIS包都是非常自我解释的。通过SQL与SSIS的紧密集成使您可以成为SQL的一部分,用于备份调度和巨大优势。
每个人解释说如果你正在进行大量的数据操作,那么这是一个很好的工具。如果您已经准备好SQL,并且使用VS 2008 BIDS非常容易学习,那么它是免费的
答案 7 :(得分:2)
迟到回答这个问题,但我希望它值得,
与编程语言相比,SSIS经常被误解。 SSIS是一个框架,而C#是.NET Framework上的一种语言。我在处理和处理方面有丰富的经验。使用(MSBI套件)开发大型数据仓库解决方案,并开发了大型网站(ASP.NET) - 所以我不能有偏见。
SSIS如果使用不当可能会降低性能。 SSIS包有三种转换:
SSIS在非阻塞转换方面非常出色,并且在控制流和数据流方面进行了适当的设置。我已经在更大的(超过2 TB的数据仓库)上使用它,我可以保证它是最快的负载体验。您可以查看Microsoft博客中的We Loaded 1TB in 30 Minutes with SSIS, and So Can You
我同意SSIS在处理阻塞转换时会降低性能,并且应该在需要时由T-SQL承载。
来到C#,我接受SSIS使用.NET框架和数据提供程序来完成任务。但是C#作为一种语言更具逻辑性,必须对待它来处理业务逻辑。例如,如果我们必须根据条件运行带有不同参数的exe,您可以编写一个包,该包将考虑参数,然后在逻辑上决定需要传递哪个参数来运行exe文件。在SSIS中执行此操作将是一个漫长的过程,而我可以在C#中轻松完成这一过程,因为逻辑事物可以用语言而不是框架轻松完成。
现在重点是解决问题陈述的更方便的方法。 SSIS是一个肯定的赢家,可以加载大量从源到目的地加载数据的记录,而C#非常适合编写逻辑。即使你喜欢C#,我也不建议你选择在大型数据仓库系统上进行ETL(Extract Transform Load)操作。
答案 8 :(得分:1)
顾名思义,SSIS是一个集成系统。在.net中,很难处理连接器以分散各种数据源(例如excel,teradata,oracle等),也难以履行优雅地关闭这些连接,进行垃圾回收,处理内存问题的责任。
因此,SSIS是开箱即用的产品的理想选择,不仅需要从两个不同的来源中提取数据,而且还需要在写入之前执行一系列查找,转换,合并,推导和计算的场景将其定位到目标位置(SQL服务器,平面文件或其他数据库系统)。
SSIS还具有检查点,如果该软件包由于任何原因而失败,它将从中断处重新开始(需要配置它,因为这不是默认行为)。
此外,由于SSIS的任务是可重用的,并且部署过程非常容易实现和安排,并且具有出色的事件处理能力,因此SSIS将为您节省大量时间。
答案 9 :(得分:1)
基本上,SSIS具有许多优势,例如将数据从A点到B点的传输分成较小的块并分别进行调试,能够轻松访问SQL Server表,处理XML数据,使用c#脚本进行API调用,以及将数据保存在DB上,读取远程服务器上的DB数据和FTP等。
除了一堆已经存在的BI块之外,您还可以使用自己的参数和输出创建自己的自定义任务。
希望我能够为已经存在的答案添加一些要点。
答案 10 :(得分:1)
SSIS通常用于ETL(提取转换负载)。具体的用例是对SSAS(SQL Server Analysis Services)多维数据集的预处理。并使用Data Change Capture增强提取。
它可以执行典型的自动化操作,包括FTP和电子邮件。在编程方面,使用脚本任务(C#或Visual Basic),因此SSIS所具有的功能超出了它所包含的控件...
可以对包装进行编程以使用条件控制流路径。例如,在周一至周五执行某项任务,而在周六和周日执行另一项任务。如果某些条件不满足,则拒绝执行ETL。
SSIS包可以调用其他SSIS包。这样可以使代码保持模块化,从而可以重复使用。
它可以使用各种数据源,并使用“派生列”控件执行简单的转换。这与在源服务器(例如Oracle或Hadoop,您无法通过本地SQL Server进行控制的源服务器)上进行转换相对应。
答案 11 :(得分:0)
日常任务,由SSIS Deveoper使用并且是 与.Net相比,相对简单:
表格之间的数据比较。
条件拆分,数据在某些基础上阻塞数据 逻辑。
数据转换,查找,合并,unionall,相对容易使用。
文件处理(修改,验证)。
错误处理,电子邮件提醒。
容器,FOR / FOReach循环易于使用。
使用WebService任务可以轻松地在Web服务上发布数据。
检查点,数据加载的重新运行性很容易处理。
调试很简单 - 可以在conatiner lever,package上完成 水平。
如果任务不可用,也可以执行脚本编写。此外,您可以自定义自己的任务
答案 12 :(得分:0)
以前的答案中没有人说的是正确的,但我认为使用SSIS而不是编码最重要的方面是维护过程简单,也是可重用的产品。
答案 13 :(得分:0)
SSIS非常适合BI应用程序,您可以操作Stage Table上的数据,而不是将DataWarehouse表用于BI。
我可以在SAP,Oracle上连接以获取员工信息并在PowerBI,QlikView等上提供...
如果您知道使用它的地点和原因,它是一个很好的工具。使用ir因为它很酷你会遇到麻烦。