数据仓库是一个【定期将数据从原业务系统中取出并存储到一个三维数据存储或标准化数据存储】的系统。数据仓库通常保存多年的历史数据,以供商业智能或其他活动查询使用。典型的数据更新方式是批量更新,而不是在每次原业务系统中发生transaction时更新。
取出:使用ETL从多个业务系统中取数。
存储:既然数据是从多个业务系统中来的,那么存储到数据仓库中的数据必须是集成化的。也就是说数据必须满足有效性(系统A包含address1,address2,address3,zip等字段,而系统B不包含address3),相同的时间范围(系统A的某个值是按月统计,而系统B是按周统计),相同的定义(系统A中的total order value的计算方式不同于系统B),单位换算(系统A的price是美元为单位,而系统B为人民币,而在做转换的时候还需要考虑到汇率每天都会变化,因此在做转换时要使用交易发生当天的汇率),匹配相同的数据(客户A在系统A和B中都存在,但数据属性有区别。当要集成数据时就必须合并客户A的这些属性,首先就要对客户进行匹配)
定期/周期性:取数和存储并不是一次性的动作,需要在相同的间隔周期重复执行,只需要保证间隔周期满足业务需要即可。
三维数据存储:星型架构(结构简单但有数据冗余)、雪花型架构(能减速数据冗余)、星河架构(能对商业活动更准确的建模)
标准化数据存储:关系型数据库存储结构,利用主从关系(主外键)和范式(三范式及更高)来组织的结构。因此冗余很少甚至没有。
三维数据存储用于进行查询和分析,而标准化数据存储用于集成多个系统中的数据。标准化数据存储用来实现企业数据仓库,数据再从企业数据仓库中加载到三维数据存储中,以供查询和分析使用。
商业智能:对不同类型数据的分析来制定策略、战术、商业决定、提高业务效率。包括对客户、供应商、市场动向、竞争对手、质量控制等数据的收集、分析、管理。
商业智能典型的3种表现:Report,OLAP,Data Mining
其他活动:科学研究、政府管理、军事智能、灾难管理等。
批量更新:数据仓库只能在特定的周期进行批量更新而不能根据业务系统的变化进行时时更新,因为业务系统的数据每秒都会更新,这样就很难对数据进行分析,因为数据一直在变化。另一个原因是,想要做到实时更新要么在原业务系统的table上创建trigger,要么修改应该程序,在数据插入系统表时同时插入数据仓库。这会极大影响业务系统的性能及稳定性。一个可行的办法是在某些关键的表中进行实时更新,但仅限于少量的表,而其他的表行进批量更新。 不过近些年业务要求的不断提高也渐渐开始流行实时数据仓库,甚至有一些基于业务仓库的可以操作的业务系统。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------