DW2.0的数据来源是操作型源系统和遗留系统。
对于一个企业来说,数据是最先在操作型环境中生成的。但是,这些操作型环境大多是很多年前开发的,文档记录基本上都不全。在这些系统中,数据是伴随着交易产生的,随着交易的发生,数据作为副产品被收集起来。
典型的操作型环境的主要元素包括程序、报表、处理器、文件、数据库等内容。
DW2.0中的数据来源于操作型环境,所以我们需要对操作型环境高度关注。进入DW2.0的数据需要准确、最新、完整。为了保证这一点,我们需要定义用什么来决定源系统的系统记录(System of record)。DW2.0中需要的源系统记录应该是源系统的中最好的数据。(Inmon提到的system of record和kimball提到的system of record有些微小的差别。kimball的system of record指起始数据来源,即最早产生数据的地方;Inmon的system of record指数据仓库能得到的数据质量最好的源系统的数据,数据质量包括准确、最新、完整。个人感觉,两者的差别并不大,最初产生数据的地方的数据才能保证最准确、最新、最完整。)
寻找企业中最好的源数据的地方是在操作环境中的应用中。
操作型环境一般受发生在环境中的交易处理的情况所影响。当交易处理发生时,尤其是大量的交易处理发生时,操作环境要保证稳定。这时,不能执行大批量的后台批处理进程,否则会对操作环境的稳定运行产生较大的影响。而大多数的情况下,交易处理的窗口时间都很长,经常超过从早晨8:00到晚上5:00。所以,为了满足这些交易处理的需求,操作型环境就不能再为其他类型的需求提供服务。
操作型环境还有一些其他的局限性。其中之一就是很多操作型环境都是很多年前建立的。由于建立的时间比较久远,通常缺少相应的说明文档,有时即使有说明文档也不是最新的,和操作型系统的实际情况存在着差异。这时,我们要去了解操作型环境到底是什么样子的是件比较困难的事情。
尽管操作型环境有这些局限性,DW2.0的架构师必须要将数据从操作型环境迁移入DW2.0中,并首先需要为这些迁移做好准备工作。DW2.0的数据仓库架构师需要去判断出哪些操作型环境或者操作型环境的哪些数据是DW2.0需要的最好的数据。
并不是操作型环境中的所有数据都要迁移入DW2.0中,选择进入DW2.0的数据应该是操作型环境中能得到的最好的数据。
最好的数据的标准是:
-最准确(most accurate)。
-最完全(most complete)。
-最新(most up to date)。
这个最好的数据的定义在DW2.0中称为源数据系统记录(source date system of record)。
有些情况下,数据仓库中的某一部分数据可能会有多个数据源,其他情况可能只有一个数据源。不管是什么情况,都需要按照DW2.0定义系统记录的标准去选取。
当在操作型系统中找到最好的源数据后,需要建立从操作型源系统到目标系统的映射。DW2.0中称之为数据映射(data mapping)。
有些情况下,这种数据映射的规则很简单,只要标明数据起源于哪里,迁移到哪里即可。但是,更多的时候,这种数据映射是相当复杂的。这些映射中可能会包含数据计算、数据处理、日期处理等操作。
例如:
-需要将不同的记录合并成一个记录,合并本身可能并不复杂,但要处理好不同记录之间的关系。
-数据的源有多个时,需要定义什么情况下哪个源的数据是最好的数据,即system of record。
-有时,源系统的某些数据缺失时,需要提供必要的缺省值。
-有些数据映射需要校正数据的编码值。因为有些时候源系统的数据编码方式和目标系统的数据编码方式不一样,这时就需要改变数据的编码方式。
当各种数据映射都定义好以后,数据就可以进入DW2.0了。这些数据映射关系是ETL处理的必备的前提。