上QQ阅读APP看书,第一时间看更新
1.3.3 数据装载
ETL的最后步骤是把转换后的数据装载进目标数据仓库。这一步操作需要重点考虑两个问题:一是数据装载的效率问题;二是一旦装载过程中途失败,如何再次重复执行装载过程。
即使经过了转换、过滤和清洗,去掉了部分噪声数据,但需要装载的数据量还是很大的。执行一次数据装载可能需要几个小时的时间,同时需要占用大量的系统资源。想要提高装载效率,加快装载速度,可以从以下几方面入手:首先保证足够的系统资源;数据仓库存储的都是海量数据,所以需要配置高性能的服务器,并且要独占资源,不要与别的系统共用;其次在进行数据装载时,要禁用数据库约束(唯一性、非空性,检查约束等)和索引,当装载过程完全结束后,再启用这些约束,重建索引,这种方法会大幅提高装载速度;最后在数据仓库环境中,一般不使用数据库来保证数据的参考完整性,即不使用数据库的外键约束,它应该由ETL工具或程序来维护。
数据装载过程可能由于多种原因而失败,比如装载过程中某些源表和目标表的结构不一致而导致失败,而这时已经有部分表装载成功了。在数据量很大的情况下,如何能在重新执行装载过程时只装载失败的部分,这是一个不小的挑战。对于这种情况,实现可重复装载的关键是要记录下失败点,并在装载程序中处理相关的逻辑。还有一种情况,就是装载成功后数据又发生了改变(比如,有些滞后的数据在ETL执行完才进入系统,就会带来数据的更新或新增),这时需要重新执行一遍装载过程,已经正确装载的数据可以被覆盖,但相同数据不能重复新增。简单的实现方式是先删除再插入,或者用replace into、merge into等类似功能的操作。
装载到数据仓库里的数据,经过汇总、聚合等处理后交付给多维立方体或数据可视化、仪表盘等报表工具、BI工具做进一步的数据分析。