建造数据仓库要做些什么?
一般说来,建造数据仓库主要两个方面:
1. 与操作性数据库的接口设计。
2. 数据仓库本身的设计。
看上去好像很简单,但事实并非就这么按部就班,假设我是一个数据库设计师,我完全可以不管三七二十一,先载入一部分数据,让dss分析员(还没忘吧,就是那个给设计数据仓库的人要求的)分析去吧,等他先给点意见出来,我们在动手也不迟。
下面,我将按照提出问题、解决问题的顺序来上一堂学前班。
建造数据仓库的主要难点是什么?
首先纠正一个广泛存在的错误认识:建造数据仓库的过程就是从操作性数据中提取数据的过程,之所以说这是错的,主要是因为:操作性数据大都是非集成的(有谁见过一个计费程序可以把几年的账单条目统计一遍的),你不可能抽取出你真正需要的东西,例如这个月的平均花费,马磊在这个月的加班日等等,不用我说,你也知道:操作性数据主要是为应用程序服务,而每个系统或应用程序都有其特有的“独立性”,在开发的时候,谁会想到以后还要翻旧帐呢?
好了,换一个新的视角看问题:如果不仅仅是抽取的话,那还有些什么问题呢?如下:
第一个问题:系统集成。当成百上千张表放在一起,需要你来统计的时候,你敢肯定这个表的某一字段和另一张表的同名字段是一个含义么?或者反过来说:你敢肯定这个表的某一字段和另一张表的不相同的字段一定是毫无关系的么?这些问题可以归结成一个问题:系统缺乏集成性!解决这个问题的方法除了更好的设计你的数据库,只有靠你的耐心了。还有就是字段的转换问题,看下面这个例子:性别(sex)在数据库中有很多表达形式,可以写成m/f,也可以写成0/1来表示男/女,等等……怎么办?为了保证传唤到数据仓库的数据正确,我们必须建立不同的映射(sorry,简单的说是:将上面提到的那种性质相同,表示的不同的数据用同一种形式表达出来),这也是一件需要耐心的工作!