确定数据仓库中数据的恰当粒度是数据仓库开发者需要面对的一个最重要的设计问题。数据粒度主要针对指标数据的计算范围,如人口这个数据项在统计部门是以街区范围还是一个社区为范围统计的。人口数据细化程度越高,粒度级就越小;相反,细化程度越低,粒度级就越大。粒度是数据仓库主要设计问题,因为它极大地影响存放在数据仓库中的数据量的大小,同时影响数据仓库所能回答的查询类型。在设计数据仓库的时候权衡数据量大小和查询类型得出合理的粒度大小。下面我们通过规划设计和建设两个阶段来讲解数据仓库粒度的确定。
1.规划阶段
“规划”——对未来整体性、长期性、基本型问题的思考和考量,设计未来整套行动的方案。在规划阶段过程中首先粗略估算数据量,估算的目的是掌握数据仓库中数据量的一个范围。第二步预测未来数据集市中应用需要的粒度,数据仓库存储数据集市使用的最小粒度。
1.1.建立良好的循环反馈机制是很重要的。
首先就要建立完善的循环反馈机制。数据仓库是面对模糊需求开始建立的,粒度不可能一次就能规划好,先导入少量数据,建立一部分应用提交给用户使用,并聆听用户使用意见,根据用户的使用意见调整粒度的大小。
1.2.对存储数据进行粗略估算对设计体系结构的人员来说非常有用。
粗略估算数据仓库的数据量,可跟好的规划数据仓库架构。如果数据只有10 000行,那么数据仓库采用粒度级越小的数据存储,数据仓库中存储所有明细数据。如果明细数据有10 000 000行,进入数据仓库的数据就需要进行初步汇总。如果有100亿行,数据仓库不但需要有一个高粒度级,还可能将大部分数据移到溢出存储器上去。
估算方法如下:
注意:对数据仓库大小的估算预测几乎总是偏低,而且,数据仓库的增长速率一般比预测的要快。
1.3.预测数据集市中可能使用的数据粒度是很必要的。
为了合适地填充所有的数据集市,数据仓库中的数据必须在一个所有数据集市所需要的最低粒度水平上。
规划阶段的成果是数据仓库建设的重要依据内容。规划阶段对组织架构,数据量大小和后期应用的摸底,可以制定方案,并对可能的结果有预先的认知,对可能存在的问题设计上进行避免。
2.建设阶段
2.1.根据估算的空间结果,在体系架构设计上可以根据数据量大小进行存储设备选择。需要多少直接存取存储设备,是否需采用双重粒度设计。
2.2.设计溢出数据的管理。溢出数据是指数据仓库将不经常被访问的过时的数据转移到存储量更大的访问速度慢的存储器上的数据。管理溢出数据可以方便索引定位历史数据并可以快速取出该数据。
跨介质存储管理器和数据活动监控器可以对溢出数据进行有效的管理。磁盘存储器和大容量低速存储器之间的数据移动是通过一种称为“跨介质存储管理器(CMSM)”的软件来控制的。数据活动监控器,用来确定哪些数据正在被访问,哪些没被访问。数据活动监控器能提供数据存储的位置信息。
2.3.实施数据仓库过程中粒度的确定是一个往复循环的过程。利用规划阶段建立的反馈循环方法,不断的从分析员获得反馈,不断的优化数据仓库。
第一次的设计过程中,如果有50%是正确的,那么整个设计就是成功的。
从图可以看出成功建立数据仓库离不开分析人员的通力协作。建设者要不断的聆听分析员的意见。分析人员在建立数据仓库的时候并不知道自己需要什么,只有在他们看到最终分析结果,才能告诉数据仓库工作人员什么才是他们真正有用的。为了有效的获得反馈,以下几点技巧可供参考:
快速建立数据仓库很小的子集并认真听取用户的反馈意见;
使用原型方法;
参考别人的经验;
与有经验的用户协同工作;
以企业中已有的功能需要作参考;
定期举行数据仓库建设例会。
3.例举银行粒度小例子
3.1.银行环境中粒度级别,下图是银行中的数据粒度例子。
银行的操作层存放的是以日为单位粒度的数据。银行的各个业务系统只存放最近60天交易活动明细内容,方便用户查询最近两个月的交易信息详情,这段时间用户对交易数据明细最为关心。
数据仓库层将数据汇聚成以月为单位粒度的汇总数据。银行将过去长达十年的数据按每个账户每月交易信息进行汇聚,存储在直接存储设备,供高速查询访问,用户对过去很久的交易明细并不在意,但是用户需要快速查询得出结果,此时提供以月为单位的汇总数据可以满足用户的需求。
所有的历史数据以日为单位存放在溢出存储区,该区域数据量极大,访问频率极低。一般银行不受理长达十年的历史明细数据查询的请求,如果一些特殊情况需要查询超过十年的历史数据,查询时间会相当缓慢。
4.小结
数据仓库粒度的确定是一个困难的过程,要求一个合适的级别,既不能太高也不能太低。
选择粒度级别很大程度上基于常识。建设之前作好适当的规划,估算数据量并建立相应的反馈制度。在实施的过程中,首先建立数据仓库的一小部分,并让分析人员使用。然后聆听他们的意见,根据他们的反馈对粒度级别进行适当的调整。