zoukankan      html  css  js  c++  java
  • SSIS数据流组件开发(1)转载

      微软将数据流技术称为管道(Pipeline)技术,数据流组件也可以叫做管道组件。可以形象地将数据看成水流在管道中流动,每个数据流组件接收上游组件交付的数据,将数据处理后再交付给下游的组件。

    组件元数据

       可以通过右击一个组件,选择显示高级编辑器来查看组件的元数据。



       不是所以的组件都可以显示高级编辑器,而且很多组件,即使在高级编辑器中,我们也无法任意修改预定的元数据。比如在组件中加入或删除输出。关于保护元数据,会在实现组件设计时方法中提到。

       输入和输出是组件最基本的元数据,每个组件都可以若干个输出和输入,输入用来接收上游组件输出的数据,组件对数据处理完成后,输出将数据交给下游组件。源组件只有输出,目标组件只能有输入。

       上游组件的输出和下游组件的输入通过路径来连接,图中绿色的有向线就是路径。可以在路径上添加数据查看器,查看执行时数据的传递过程。



       另一重要的元数据是连接管理器,对源组件和目标组件来说,连接管理器时必须的。通过连接管理器实现与外部数据库的对话,读取或写入数据。

    数据转换类型

       数据从一个组件传递到另一个组件的方式有三种:

          1.行转换 —— 指组件接收到一行数据,对此行数据处理后再输出。在组件的整个数据处理过程中不新建或删除数据行。例如一个组件会接收上游的100行数据,它每收到一行数据,处理完成后就将此行数据交给下游组件,不会等到所有的100行数据都处理完成后再交给下游组件。

          2.半阻塞转换 —— 指组件会控制数据一段时间。例如组件接收100行数据,它要对每10行数据汇总一次,最后输出10行汇总的数据。不同于行转换,每收到一行数据后,它不会立刻处理输出,而是将数据暂时保存,等收到10行数据后再处理,处理输出一行数据。

          3.全阻塞转换 —— 类似于半阻塞转换,但全阻塞会控制所有的数据。处理100行数据过程中,半阻塞分10次输出数据。而全阻塞只会在收到全部100行数据后才会处理输出。如排序组件,只有等收到所有的行后,才能确定排列顺序。

    同步/异步输出

       与数据转换类型对应的,组件的输出也分成同步和异步两种。

       行转换组件的输出是同步的。打开一个派生列组件的高级编辑器,看输入的IdentificationString是:输入派生列输入”(325)

     



       
    再看看输出的SynchronousInputID就是输入的IdentificationString。说明这个输出是与输入是同步的,每次输入收到一行数据后,输出便传递一行数据给下游组件。



       
    半阻塞和全阻塞组件的输出都是异步输出,他们的SynchronousInputID是无值的。

    Buffer

       Buffer是用于装载数据的容器。源组件从外部数据获取数据后,数据就被装载到Buffer保存在内存中。一个数据流中可以有多个BufferBuffer不是由单个组件独有,而是由一簇组件共享,Buffer的数量由异步输出和Buffer容量决定。



       数据流中每遇到一个异步输出,便创建一个新的Buffer。上图中有4个组件,源组件和排序组件有异步输出,于是有两个BufferBuffer1中含有源组件和派生列组件的列,假设源组件从外部数据源读取的数据有3列,而派生列组件又派生了2列,那么Buffer1中将定义5个列。排序组件接受完Buffer1的数据后,Buffer1的生命周期也就结束了,排序组件将创建Buffer2

       Buffer的容量是有限制的,可以设置数据流任务的DefaultBufferSize属性来指定Buffer的大小,最大不超过100MBDefaultBufferMaxRows是建议的Buffer中最大行数,实际数据流执行过程中最大行数会根据MinBufferSizeMaxBufferSize调整。

     



       如果组件需要的容量大小超出一个Buffer的最大容量,则会建立多个Buffer

    了解上述的概念基本后,就可以开发数据流组件了,想要进一步理解数据流执行计划,参见http://technet.microsoft.com/en-us/library/ms136012.aspx

  • 相关阅读:
    关于Maya Viewport 2.0 API 开发的介绍视频
    春节大假
    Some tips about the life cycle of Maya thread pool
    Can I compile and run Dx11Shader for Maya 2015 on my side?
    How to get current deformed vertex positions in MoBu?
    想加入全球首届的 欧特克云加速计划吗?
    三本毕业(非科班),四次阿里巴巴面试,终拿 offer(大厂面经)
    mac、window版编辑器 webstorm 2016... 永久破解方法。
    node 搭载本地代理,处理web本地开发跨域问题
    js 一维数组,转成嵌套数组
  • 原文地址:https://www.cnblogs.com/Bany/p/1969186.html
Copyright © 2011-2022 走看看