专注于中国的商业智能

导航

KDT#27 减小离线时间的一种方法

在数据仓库系统中,通常我们会每天迁移新的数据进入数据仓库。一般来说,我们会在凌晨时用户不会使用的某段时间进行数据的迁移,在数据迁移的这段时间,数据仓库处于离线状态。但是对于较大的数据仓库系统,用户可能分布在全国或者全球,用户的时区不一样,工作时间也不同,在我们凌晨时其他地区的用户可能还在工作。这就要求我们要尽量的减小数据仓库的离线时间。

有一种方法可以解决这个问题,就是使用分区(partition)替换技术。目前的关系数据库基本上都支持分区,但方式和功能可能会有不同。

这个方法假定你的数据库分区技术支持如下操作:

可以单独移动一个分区而不是整个表移动。

可以将单独的分区置于离线状态。

可以在单独的分区上放弃或重建索引。

可以在单独的分区内添加、修改和删除记录。

可以重命名一个分区。

可以用一个分区替换另一个分区。

假设你有一个事实表,其中要更新的分区叫FACT,还有一个该表的没建立索引的副本分区叫LOADFACT。该方法的步骤如下:

1.将昨天的数据读入LOADFACT分区。

2.读取完毕后,建立LOADFACT分区的副本叫COPYLOADFACT分区。

3.在LOADFACT分区上建立索引。

4.将FACT分区离线。

5.将FACT分区改名为SAVEFACT分区。

6.将LOADFACT分区改名为FACT分区。

7.将FACT分区上线。

8.将COPYLOADFACT分区改名为LOADFACT分区,给下一次迁移使用。

9.确定一切成功后,删除SAVEFACT分区。

这样,我们就可以降低了数据仓库的离线时间。这里,直接使用分区而不是使用表做替换单位,是为了减小替换时间。如果要更新数据的分区很小的话,两个改名的操作时间应该非常小。

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