操作数据层 ODS
在数据仓库的整体架构中讲到,ODS 层的数据需与原业务数据保持一致,且不允许修改,从而完成历史数据积存的功能。
数据管理
但在实际企业开发中,ODS 层的数据是原始数据的一个扩充集,在保留所有原始数据的情况下,会增加一些字段用来进行数据管理。
如下图所示,为表增加 update_time 字段标识数据进入数据仓库的时间,from 字段标识数据的源系统,update_type 字段标识数据的更新类型。
不过 ODS 层不是不允许数据修改吗?怎么会出现 update_type 属性呢?其实 ODS 层的数据在第一次进入数据仓库时,即通过 ETL 流程导入后,数据的 update_type 统一为 INSERT。但 ODS 层积存了历史数据后,业务系统会定期清理这些已经存储到数据仓库的历史数据,从而保证业务系统的性能;于是业务系统对历史数据低频率的查询、修改,就落到了数据仓库中,而 ODS 层不允许被修改,所以需要将修改的数据查询出来,修改后以追加的形式追加到 ODS 层中,此时这条追加数据的 update_type 就变为 UPDATE,标志着是后期被业务系统更改的数据。
数据更新
在数据仓库中,业务数据定期会通过 ETL 流程导入到 ODS 中,导入方式有全量、增量两种。
数据第一次导入时,会选择全量导入。数据非第一次导入,每次只需要导入新增、修改的数据;新增的数据可以直接追加ÿ