确定粒度是数据仓库开发者需要面对的一个最重要的设计问题。其主要问题是使其处于一个合适的级别,粒度级别既不能太高也不能太低。
1、粗略估算
确定适当粒度级别所要做的第一件事就是对数据仓库中将来的数据行数和所需的DASD(直接存储设备)数进行粗略估算。对将在数据仓库中存储的
数据的行数进行粗略估算对于体系结构设计人员来说是非常有意义的。如果数据只有1万行,那么几乎任何粒度级别都不会有问题,如果数据有1000
万行,那么就需要一个低的粒度级别,如果有100亿行,不但需要有一个低粒度级别,还需要考虑将大部分数据移到溢出存储器(辅助设备)上。
空间/行数的一个计算方法:
(1)确定数据仓库所要创建的所有表,然后估计每张表中一行的大小,确切的大小可能难以确定,估计一个下界和上界就可以了。
(2)估计一年内表的最大和最小行数。(最大难题)
(3)用同样的方法估计五年内表的最大和最小行数。
(4)计算索引数据所占的空间。确定每张表(对表中的每个关键字或会被直接搜索的数据元素)的关键字或数据元素的长度,并弄清楚是否原始表中
的每条记录都存在关键字。
(5)现在,将各表中行数可能的最大值和最小值分别乘以每行数据的最大长度和最小长度。另外还要将索引项数目与关键字长度的乘积累加到总的
数据量中去,以确定出最终需要的数据总量。
2、粒度设计过程的输入
估计出来的行数和DASD就是粒度设计过程的输入。在进行估计时,结果的准确程度达到数量级就可以了。通过空间估计,行数估计可以得出需要多少DASD?
期望的排序可以达到多快?需要双重粒度吗?
3、溢出存储器中的数据
3、1 根据数据仓库中数据的总行数确定是否需要转移数据到溢出存储器中。根据数据仓库中将具有的总行数的多少,采取不同的设计、开发及存储方法。
(1)一年期:10万行以下的话不用考虑;100万行的话,需要谨慎考虑,这时不一定需要转移数据;1000万行的话,设计不但要小心谨慎进行,
而且有一些数据要转移到溢出存储器;一亿行的话,这时一定会有大量的数据要转移到溢出存储器中去。
(2)五年期:总行数将大致增加了一个数量级,并且会出现很多变数:
a、在管理大量数据时,将有更多可用的专门技术。
b、硬件费用将会有所下降。
c、将可以使用功能更强大的软件工具。
d、最终用户将更加专业化。
3、2 溢出存储器的使用
一般情况,数据仓库环境中的数据会以it人员从未见过的速率增长,历史数据与细节数据的结合造成了这种显著的增长速率。随着数据量的不断增长,经常
使用的数据与不经常使用的数据出现了自然的分化。不经常使用的数据通常称为不活跃数据。数据仓库在建立并使用了一段时期之后,其中的大部分数据都
将变旧而没人使用。此时,分离这部分数据到溢出存储器就很有必要性了。
(1)存储在溢出存储器中的数据与存储在磁盘上的数据一样可以访问。通过将不活跃数据转移到溢出存储器上,体系结构设计人员就为高性能的、活跃的
数据的有效使用清除了障碍,从而可以大大提高整个环境的性能。
(2)为了能够在整个系统范围内访问数据,并为了能将不同的数据放在存储器的合适位置上,要求能为溢出存储器提供软件支持。
a、能够监控数据仓库的使用,确定应该在哪里存储数据。
b、磁盘和溢出存储器之间的数据移动需通过一种叫跨介质存储器管理软件来管理的。
c、要求能够直接访问溢出存储器中的数据。
(3)存放不活跃数据的溢出存储器是数据仓库的一个重要组成部分,其对于粒度有很大影响。有了溢出存储器,设计者就可以放手建立想要的粒度级别。
(4)体系结构设计人员需确保存储于溢出存储器上的数据不被经常使用,因此可采用如下一些方法:
a、当数据达到一定年龄(如24个月)才将它们放到溢出存储器上。
b、汇总数据放在磁盘上,细节数据放在溢出存储器上。
4、确定粒度级别
(1)确定适当的粒度级别要做的第一件事就是进行一次合理的推测。
(2)第二个需要考虑的是对需要从数据仓库获取数据的各个不同体系结构实体的需求进行预测。通常数据仓库中的数据需要处于最低的公共细节水平。
5、一些反馈循环技巧
(1)以几个很小但是很快的步骤建立数据仓库最初的几个部分,开发过程的每个步骤结束时都要仔细聆听最终用户的意见,并准备随时做出快速的调整。
(2)如果可以使用原型工具的话,使用原型法,并使用从原型中收集的观察结果,加入到反馈循环。
(3)看看别人是怎么确定他们的粒度级别的,学习一下他们的经验。
(4)与一个对当前过程很了解的、有经验的用户一起将反馈过程走一遍。无论如何,都要让你的用户清楚反馈循环的动态过程。
(5)只要有的话,看看企业中那些具有意义的东西,并将那些功能需求作为参考。
(6)进行联合应用程序设计(JAD)会议,并模拟输出结果以获得理想的反馈。
(7)在建造数据仓库中,如果开发者想等着大多数需求明了以后才开始工作,那么数据仓库将永远建立不起来,尽快地启动与DSS分析员的反馈循环是
非常重要的。
(8)通常,在业务过程中创建事物时,这些事物是根据大量不同类型的数据建立起来的,当正常的业务事物记录准备放入数据仓库时,它们的粒度通常
是太高,需要进一步分解,当然也有例外:
a、生产过程控制。模拟数据是作为生产过程的副产品被创建的。
b、在网络环境中产生的点击流数据。
由于这些数据处于非常低的粒度级别,不能在数据仓库中使用,需要提高级别才能放入数据仓库。
6、银行环境中的粒度级别
一般采用双重粒度,常见例子有:
(1)最近60天的交易活动数据都存储在操作型在线环境中,轻度综合级的数据,总共是十年的历史活动记录(一个帐户在给定月份的活动记录)存储在
数据仓库部分。档案级(溢出层)的数据,其中存储着每一个细节的记录。
(2)所有的顾客数据分布在整个环境中,在操作型环境中出现的数据是在当前使用时准确的顾客数据,在轻度综合级中,存放的也是同样的数据
(从数据定义的角度来说是同样的),但是这些数据只是每月生成一次的快照。还有一个连续的文件存放长时间范围内的顾客数据,他是根据每月文件
生成的。
7、制造业环境中的粒度级别
两个例子
(1)在操作层,存储的是按给定若干零件的装配工作的完成情况的制造记录。轻度综合级上包括两个表,一个表按天汇总一种零件所有生产活动,另一个
表按装配活动和零件进行汇总。零件的生产累计表存放的是90天的数据,而装配记录只存放数量有限的按日期汇总的生产活动数据。档案级(溢出层)的数据,
其中存储着每一个细节的记录。
(2)操作型环境中有一个活动订单文件,所有需要有生产活动的订单都存储在这个文件中。在数据仓库中存有近10年的订单历史,由于数据量不大,不需要
考虑转移数据到溢出存储环境。
8、保险业环境中的粒度级别
两个例子
(1)保险金支付信息收集在一个活动文件中。然后,过一段时间以后,这些信息被传送到数据仓库中。因为这里的数据相对较少,就不需要溢出数据。
然而,由于保险金支付的定期性特点,支付数据是作为一个数组的一部分存放在数据仓库中的。
(2)在操作型环境中,存储了大量的有关索赔的详细数据。当一个索赔已解决(或已确定不予以解决),或者索赔隔了好长时间还未办理,这个索赔
的信息就转移到数据仓库中去。在传送时,以多种方式对索赔信息进行汇总----按代理和月、按索赔类型和月,等等。在一个更低的细节上,溢出存储器
中以无限期的方式对索赔信息进行保存。
9、小结
为结构化体系环境选择一个适当的粒度级别是成功的关键。选择粒度级别的一般方法是利用常识,首先建立数据仓库的一小部分,并让用户去访问这些数据。
然后仔细聆听用户的意见,根据他们的反馈意见对粒度级别做适当的调整。
数据仓库概念中细化与粒度关系 粒度对数据仓库的影响
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章