如何设计数据仓库?粒度问题是一个最重要方面!

来源:互联网 发布:淘宝交易款临时冻结 编辑:程序博客网 时间:2024/09/21 06:33
粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别。细化程度越高,粒度级就越小;相反,细化程度越低,粒度级就越大。


数据的粒度一直是一个设计问题。在早期建立的操作型系统中,粒度是用于访问授权的。


当详细的数据被更新时,几乎总是把它存放在最低粒度级上。但在数据仓库环境中,对粒度不作假设。下图说明了粒度问题。


在数据仓库环境中粒度之所以是主要的设计问题,是因为它深深地影响存放在数据仓库中的数据量的大小,同时影响数据仓库所能回答的查询类型。在数据仓库中的数据量大小与查询的详细程度之间要作出权衡。


粒度的一个例子


左边是一个低粒度级,每个活动(在这里是一次电话)被详细记录下来,数据的格式如图所示。到月底每个顾客平均有2 0 0条记录(全月中每个电话都记录一次),因而总共需要40 000个字节。

该图的右边是一个高粒度级。数据代表一位顾客一个月的综合信息,每位顾客一个月只有一个记录,这样的记录大约只需2 0 0个字节,记录的格式如图所示。


显然,如果数据仓库的空间很有限的话(数据量总是数据仓库中的首要问题),用高粒度级表示数据将比用低粒度级表示数据的效率要高得多。


高粒度级不仅只需要少得多的字节存放数据,而且只需要较少的索引项。然而数据量大小和原始空间问题不是仅有的应考虑的问题。为了访问大量数据,其处理能力的大小同样也是应考虑的一个因素。


所以,在数据仓库中数据压缩非常有用。当数据被压缩后就会大大节省所用的DASD存储空间,节省所需的索引项,以及节省处理数据的处理器资源。


但是,当提高粒度级时,数据压缩就会出现另一个问题,下图中表示作出的选择。


当提高数据粒度级时,数据所能回答查询的能力就会随之降低。换句话说,在一个很低的粒度级上你实际可以回答任何问题,但在高粒度级上,数据所能处理的问题的数量是有限的。





在一个D S S环境中这种查询类型是非常常见的。当然,它既可以在高粒度级上也可以在低粒度级上得到回答。但在回答这个问题时,在不同的粒度级上所使用的资源具有相当大的差异。在低粒度级上回答这个问题需要查询每一个记录,所以需要大量的资源来回答这个问题。


但在高粒度级上,数据进行了很大的压缩,而且能够提供一个答案。如果在高粒度级上包括了足够的细节,则使用高粒度级数据的效率将会高得多。


在管理数据的粒度问题中的权衡如图所示。在设计和构造数据仓库之初就必须仔细考虑这种权衡。