KDT#32 数据仓库设计中的折中处理(一)
数据仓库设计师的目的是有效的发布企业的数据。这就意味着数据仓库中的数据应该是对最终用户和应用程序来说是非常容易使用的。
在数据仓库设计时,我们会采取一些折中处理,如增加数据后台的处理过程、增加数据存储空间,来得到下列好处。
1.得到用户容易理解的数据存储结构,这种结构是对称的、可预测的。
2.减小了应用程序的复杂度。
3.提高查询和报表的性能。
好的数据仓库设计师会通过类似的折中处理,使最终用户的使用变得简便、容易。下面列出了一些折中处理的例子。
1.跨时区的日期建模
一般来说,数据仓库中的所有的事实记录上都会有一个或多个时间戳。我们记录事实的发生时间会详细到时分秒。对于跨多个时区的企业来说,这种日期和时间的建模会有两种选择,一种是标准化到同一个时区,另一种是每个时区使用自己的时区标准。对于使用自己时区的方法,需要为每个时区建立时间偏移数据,在用户使用时联合时间偏移数据使用。这里的建议是,不要在应用中建立计算时区的方法。我们可以在结合两种方法,将标准化的时区和各地的时区都建立在同一个表中。换一句话说,就是多用一些存储空间,减小查询时间的工作。
2.详细的日期维度表
维度建模的数据仓库中,事实表中不应该直接保存SQL的日期字段,而应该建立日期维度表,并在事实表中引入相应的日期代理关键字。因为关于日期很多复杂的信息用SQL的日期字段是很难表现出来的。例如,SQL的日期字段很难表现当月最后一天等等。通过使用日期维度表,可以建立一个布尔型字段标识是否为当月最后一天。而类似的各种与日期相关的信息都可以直接建立在日期维度表中,通过直接对日期维度表进行关联查询,可以降低应用程序查询时的复杂性。