感谢上面三位的回答。最近我也陆陆续续的看了些文档,发现网上对这问题也是一致的看法,棘手。因为业务数据库的数据有三种变更方式:新增了某些记录,删除了某些记录,更新了某些记录。而且这三种方式是组合形式的,也就是说一张表它可能既新增了记录,有删除了某些记录,那么对应的数据...
显示全部
感谢上面三位的回答。最近我也陆陆续续的看了些文档,发现网上对这问题也是一致的看法,棘手。
因为业务数据库的数据有三种变更方式:新增了某些记录,删除了某些记录,更新了某些记录。而且这三种方式是组合形式的,也就是说一张表它可能既新增了记录,有删除了某些记录,那么对应的数据仓库也应该新增对应的记录和删除相关记录。其实4楼的说写触发器的做法可以解决部分问题,而不能解决所有情况。
不过我目前打算就是采用完全刷新的etl模式,就是每次都把数据仓库里的数据truncate掉,然后把所有业务数据库的数据进行入库。
虽然比较慢,但是简单,实用。况且数据仓库对实时性要求不高,我有大量的时间来更新数据仓库,我就让etl工具在那跑个几天,甚至是一个月。磁盘估计要接受很大的考验,不过我这样做主要是确保了数据的正确性。
收起