日期:2014-05-16  浏览次数:20327 次

建设企业级的数据平台,外围系统取数,选择推模式好还是拉模式好?

?


建设数据平台或者数据中心,还是推模式为其他系统供数比较好。

一般情况下应该是核心系统给其他系统供数。

对于外围系统,如果采用拉模式,导致过多的外围系统需要显示地依赖于核心系统的表结构,可以ETL直接抽取,也可以采用DBLink。

但是,一旦核心系统需要修改,那么影响了多个子系统的正常使用。

另外,显示访问核心系统的数据权限也是问题。

而如果采用推模式,其他子系统的运行只是需要外部数据,而子系统提供了接口表,数据平台只需要按照这契约给数即可,(考虑到一个外围系统一套给数接口,比较麻烦,可以直接给一个主题或者某个事实表,但可能比你需要的数据还要多)。这样来看,每个子系统都是相对独立的。外部数据的获取逻辑、获取方式与我无关。

从外围系统来看,拉的这种模式不仅需要依赖自身的数据接口表,还需要显示依赖其他系统的数据表。而拉模式仅仅需要依赖自身的接口表。

从核心系统来看,外围系统依赖的表,一般不要轻易改动,否则影响其他系统运行,而如果需要建设数据整合系统,核心系统升级,这些接口的改动一定要通知到外围系统。

这让我想到了spring的依赖注入。

外部数据相当于一种依赖,而采用注入的方式,由数据中心或者核心系统注入依赖数据,并且通过接口表的方式对外部提供契约,这样外围系统相对独立,核心系统以后可以扩展为数据中心,那么只需要按照接口提供另外一种注入数据的实现罢了。


?