选择何种架构是ETL系统设计之初就必须作出的最基本的决定。架构的选择会影响一切,架构的任何修改几乎都意味着整个系统要从头开始实施。架构选择一旦作出,使之最有效发挥作用的关键是坚持使用这种架构。
早期架构选择中最重要的是确定使用供应商的ETL工具还是自己手工编码方式来实现系统,几乎所有设计ETL系统的细节都基于这次选择。
(一)批处理式数据流还是流式数据流
ETL系统的标准架构是从数据源中周期性的以批处理方式抽取数据,流经整个系统,最后以批处理的方式对最终用户表进行指更新。
批处理方式到流方式的改变会改变所有的一切。
无论是选择批处理方式还是流方式,这种选择都应当是基于不同的应用需求,并且建议对整个数据仓库只采用某一种架构模式。
(二)水平方式还是垂直方式的任务依赖
水平方式组织任务流是指每个最终的数据库加载相互独立运行,抽取、清洗、转换和提交的步骤在多个工作流之间是非同步的。
垂直方式任务流会对多个离散的作业进行同步,这样最终的数据库加载会同步进行。对于抽取、清洗、转换和提交,如果之前的步骤没有全部执行完,则后面的步骤不会往下运行。
(三)调度自动化
另一个架构方面的选择是,在多大程度上使用自动化调度技术控制整个ETL系统。
(四)异常处理
异常处理应当是系统地、统一地将整个ETL过程中抛出的全部异常事件放置在数据库中,每个作业都需要向数据库写入异常报告的记录。
(五)质量控制
用户应当对数据处理过程中产生的质量问题制定一种常规的应对机制,除了触发异常报告机制外,所有的质量问题还应当产生相应的审计记录附加到最终的维表或事实表的数据中。
(六)恢复与重启
从一开始建立ETL系统的时候,就应当考虑如何保证系统从非正常结束状态下的恢复和重启能力,要保证作业在非正常终止或者错误地执行多次的情况下保证逻辑与数据的正确性。
(七)元数据
元数据包括来自于关系型数据库表和数据模型设计工具的元数据,也包括流程元数据。
(八)安全性
针对最终用户的基于角色的安全模式。
针对ETL环境中每个表和备份磁带都要有物理上和管理上的安全设置。
存档的数据集存储进应当进行校验,以保证它们没有被修改过。