zoukankan      html  css  js  c++  java
  • SAP BW 学习笔记(三)

    继续写ETL部分的学习体会,今天是Extraction的第三部分

    Dimensions of Data Extraction (
    数据抽取的维数)

             数据抽取的过程通常可以由四种不同的维度来进行描述和分类。

     

             首先是抽取模式,抽取模式通常分为完全抽取和动态抽取。两者意思很明确,完全抽取是每次抽取的时候讲数据源可用的所有数据都抽取过来,而动态抽取则是每次抽取的时候只抽取更新和增加了的新的数据。

             其次是按照抽取的情景作为抽取的维度,分为推式抽取和拉式抽取,推式抽取时,数据抽取和传输过程的发起者是操作的系统,反之在拉式抽取时,发起者变成了数据仓库。推式和拉式抽取的共存也暗含了一个领导角色的概念,因为在实际生活中,信息后台更多地是在和发起者进行交易。另外一种更好的解释方法是将推式抽取和拉式抽取分别比拟为信息的发布与预定请求与反应的情形。

             第三种抽取的维度是时间的滞后性,这里常用的有三种时间滞后尺度:同步的(就是实时的),不同步的(存储和转发)和不同步批处理(按需或者事件触发或者调度式的)。

             第四种维度则是抽取的范畴,抽取范畴对我们抽取数据方法角度的一种描述,是从映射的角度,还是从选择的角度,还是从聚合的角度,来进行这么一次抽取。

            

             每一次数据抽取的过程都可以拿这四种维度来衡量,SAP BW中首先符合SAP 3/R数据抽取需求的抽取器就主要是异步批处理拉式完全抽取模式。现在主流的数据抽取还都是集中在拉式抽取这一块内容,不过随着业务的需求变化,现在的数据抽取已经稳步地由动态总结表变成业务表,动态抽取的捕捉机制更加复杂化了。

             动态抽取的难点在于,如果和识别那些动态变化了的部分,这里通常也有两种不同的方法,一种是用增量队列的方法,一种是时间戳判断法。时间戳判断方法比较常用,也因为它比较容易实现,所以常用。但是时间戳法有缺憾就是在时间戳被记录的时间和抽取实际开始的时间之间有段无法弥补的空白,这段时间内的文件更新将会丢失。不过也有对付这个的“安全增量”法,那就是将用户的时间戳调后几小时,这样便能避免了。

           另外一种代价不菲但是质量有保证的方法就是增量队列法了,这个类似于对每次的更新和新加入元素进行记录,形成log,就是所谓的增量队列了,增量队列关键就表现为一些记录了主要键值发生变化的抓拍过程。

             和时间戳法相对比来说,增量队列法不需要更多的安全方面的顾虑,它完全与数据的更新频率没有了关系,另外两者还有一个不同之处就在于,时间戳技术只能获取在抽取时间内出现的版本序列,而不是全部,相比之下,增量队列法会有一个完备的版本连续性。

            

    不管使用哪种方法,动态抽取一个比较复杂的地方都在于,如何在互相紧密依靠的表之间的微小改变。除此之外,动态抽取的另一个挑战在与它要随时随地地面对多个不同的数据源的不同数据表的不同时间的数据更新。它却需要提供一个统一的东东,来统一这一切。

     

    当前来讲,同步的推式抽取还不能被SAP BW完全支持,同时对于拉式的对事务信息立方体的实时更新却能够实现。这种更新总是直接性的绕开了正规的分段运输过程,它们也丝毫没有运用传输或者是更新法则,它们甚至不在SAP/BW的监控范围内。

     

    推式抽取技术通常和增量更新脱不开干系,而拉式抽取则可以同时用于完全和增量抽取模型。现在BW中为开发报表最普遍深入的技术还是通过使用远程的信息块,实现抽取技术。这一进步的带来的最相关的就是性能了,通过使用多个提供者的模式,则会使得性能减低。然而,当需要实时的颗粒状数据时,异步抽取依然是可取的方法。

     

    当对R/3可用的抽取器满足了选则的动态规范和映射规范时,只有一小部分是满足对集合层面的规范,对异步抽取来说,你通常可以通过直接在SAP BW中聚合数据而不是在数据源中聚合,来弥补这个不足,对同步抽取来说,这个就是无法实现的了。

    Raymond Zhang
    If you want to discuss with me about any idea, please contact me at raymond.zhang@sap.com

  • 相关阅读:
    小朋友学数据结构(2):栈
    小朋友学数据结构(1):约瑟夫环的链表解法、数组解法和数学公式解法
    小朋友学C++(2)
    小朋友学C++(1)
    小朋友学C语言(8)
    小朋友学C语言(7)
    小朋友学C语言(6)
    小朋友学C语言(5):常量和变量,for循环
    小朋友学C语言(4):单精度浮点数与双精度浮点数
    小朋友学C语言(3):整数、浮点数、字符
  • 原文地址:https://www.cnblogs.com/rabbitzhang/p/851129.html
Copyright © 2011-2022 走看看