专注于中国的商业智能

导航

KDT#31 定义实时分区(一)

目前来说,OLTP和数据仓库中数据的时间差距已经缩短到了1天,即24小时。但是常会出现更急迫的需求,需要能在数据仓库中提供近似于实时的数据。这时,我们可以通过在数据仓库前面建立一个实时分区来解决这个问题。

通常,实时分区和数据仓库分开建立和管理,并在其中使用不同的更新规则和查询规则。实时分区的需求如下:

1.包括上一次更新数据仓库之后所有的业务活动数据。

2.和数据仓库在内容和粒度上要能无缝的连接上。

3.数据需要不断更新进入实时分区,索引要少建立。

4.支持高性能的查询。     

下面,按照实时分区中事实表的不同来讨论不同的处理方式。

1.交易粒度实时分区

交易粒度的事实表在源系统发生一次交易时产生一条事实表记录。对于交易粒度的事实表,在实时分区中的表结构和数据仓库中是相同的。其中只保留上一此数据仓库迁移之后发生的交易记录。因为我们要实时不断的向表中添加数据,所以实时分区中不需要建立索引。出于简化管理和数据量的考虑,实时分区中也不要建立聚集表。

通过交叉探察,我们也可将实时分区添加到数据仓库中,一起进行访问。例如,对于像当月销售额类似的查询,我们需要查询实时分区和数据仓库中的两张表,并将它们的结果相加得到。

对于相对大型的企业,每天的交易数量级在千万条。假设每个交易数据有40字节,一天的数据量就是400MB,一年的数据量就是150GB。这样容量的事实表在数据仓库中需要建立大量的索引和聚集来提高性能。但是对于实时分区中每天400MB的数据量可以装载如内存中,除了在主键上建立B树索引增加插入性能外,不需要建立其他索引和聚集。

posted on 2010-08-05 13:52  李梦蛟  阅读(361)  评论(0编辑  收藏  举报