SSIS多源增量更新:元数据表存源级还是表级LSET/CET?
SSIS增量更新ETL中元数据表的设计选择
我有两个数据源A、B,各自包含10张结构一致的表,计划采用SSIS增量更新方案做ETL,需要通过一张元数据表存储LSET(上次抽取结束时间)和CET(当前抽取结束时间)。现在纠结:元数据表该存储每个数据源的LSET/CET值,还是每个数据源下每张表的LSET/CET值?前者仅需2条记录,后者则需要20条,想了解业界常用的实现方式。
两种实现方案
方案1:按数据源存储
INSERT INTO data_flow (name, LSET, CET) VALUES ('A', '1/1/2020', '1/1/2020'), ('B', '1/1/2020', '1/1/2020'); GO
方案2:按表级存储
INSERT INTO data_flow (name,source, LSET, CET) VALUES ('Table1','A', '1/1/2020', '1/1/2020'), ('Table1','B', '1/1/2020', '1/1/2020'), ('Table2','A', '1/1/2020', '1/1/2020'), ('Table2','B', '1/1/2020', '1/1/2020'), -- ... 其余8张表的对应记录 ('Table10','B', '1/1/2020', '1/1/2020'); GO
业界常用选择及理由
业界普遍优先选择方案2(按表级存储LSET/CET),核心原因如下:
- 灵活性更高:不同表的更新频率、数据变化节奏往往存在差异——比如A数据源的Table1每日更新,Table2仅每周更新。按表存储可独立控制每张表的抽取时间,避免统一用数据源级时间导致漏抽或重复抽取。
- 故障排查更精准:若某张表抽取出现问题,能直接定位到该表的时间节点,不会影响同数据源下其他表的正常同步。
- 扩展性更强:后续新增表时,只需在元数据表中添加对应记录即可,无需修改原有同步逻辑;若数据源拆分、合并或调整表结构,表级元数据也更容易适配调整。
当然,如果你的所有表更新频率完全一致、数据同步要求完全同步,方案1也可以使用,但这种场景在企业级ETL中非常少见,多数场景下都会选择表级元数据存储方案。
内容的提问来源于stack exchange,提问作者Doenix
相关产品推荐
相关产品推荐

