数据仓库一个比较公认的定义,是W.H.Inmon给出的:“数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策 ”。在这个定义中有几个关键词:
1、“面向主题”。“主题”这个词有点抽象,我的理解是“某个具体的业务”。例如:“主题”可以是A产品的销售情况,B客户的财务状况,资产负责表,现金流量表等。“面向主题”则说明数据仓库的数据集中了这些主题的所有相关数据,或者说据仓库的数据是为这些主题而组织的(当然这之间包含数据抽取、清理、转换、装载的过程)。“面向主题”说明了数据仓库的业务特性,数据仓库关注着数据的业务关系和业务含义。相对于操作性数据,关注数据的逻辑关系和事务处理。例如:一个客户信息,对于操作性数据最重要的是这个客户的ID,通过客户ID就可以找到相关信息,而对于客户的性别、年龄等或许根本就不影响OLTP的运行。而对于OLAP,客户的性别、年龄却很重要,因为正是这些信息影响分析的结论。
2、“集成的”。“集成”则说明了数据仓库数据的多元性和一致性。为了获取某个“主题”全面的数据,数据仓库可能需要获取不同事务处理系统的数据,甚至是从文件、Internet获取数据。然而这些数据不是拿过来就可以用的,这些异构的数据必须进行一致性处理(进行数据清理)。例如:以A产品的销售情况作为主题,A产品的原材料、制造过程等数据在“制成管理系统”中,客户数据在“客户管理系统”中,销售额、销售成本在“帐务管理系统”中,而这些数据是相对独立,不一致的。“集成”就是要保证这些信息的完整和一致。
3、“相对稳定的”。这里“相对”的对象是OLTP,“稳定”指的更新的速度。说明数据仓库不是实时的(已经有实时数据仓库的提法,这个定义快过时了)。也就是说数据仓库要隔一定时间在去抽取数据,或者需要时才去抽取数据。另一层含义是指,数据被抽取之后就不被修改,将长期保存(完全的不做修改不大可能,很多OLAP都提供回写功能)。
4、“反应历史变化的”。“反应历史变化”说明了数据仓库数据的连续性。大部分的操作型数据都有“当前间”、“历史”区别,他们只关心当前数据,对于历史数据将被封存、甚至被删除。而对于数据仓库数据是连续的不存在当前数据和历史数据的区别,只属于某个时间点。数据的变化轨迹能连续的展示。
5、“数据集合”。
6、“用于支持管理决策”。其实数据仓库并不仅仅用于DSS,对不同的需求有着不同的用途。有的用数据仓库技术仅仅是为了提高数据查询性能。数据仓库的最大任务是:为DSS提供全面、一致、准确的数据,DSS对这些数据进行加工处理以合理的方式展示给相关人员,把数据变成信息(或者深加工,形成知识)。