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