电商运营干活分享,短视频运营,抖音运营,淘宝运营方案思路分析!

数据仓库为什么要有ODS层?by 彭文华

运营推广 yunying 10℃ 0评论

数据仓库为什么要有ODS层?by 彭文华

这是彭文华的第177篇原创

今天很开心,又收获了一个新的好问题。北京的一个开发同学Lucas,被领导拖过去做数仓了。他把我写的数仓文章都读了一遍之后,他觉得ODS层根本没啥用啊,压根不能理解为啥要有一层。

这个问题问的好啊!也许我当年学习的时候也遇到过这个问题,但是现在已经把它当成理所应当了。

所以我现在非常喜欢跟任何人聊天,尤其是外行或者初学者,因为他们才能问出真问题。有问题的,可以加我微信:shirenpengwh,咱私聊啊。

ODS是啥?

这种问题,学究派最喜欢给定义了。比如:ODS ( Operational Data Store ),操作数据存储,用来存储多个异构数据源系统的明细数据,是数据仓库的最底层。

这种回答当做字典还是很好用的,但是对于初学者就非常不友好了。一个问题衍生出来无数的问题,满脑子都是问号。你看:什么叫操作数据?什么叫异构数据源?数据仓库的最底层?那上面还有几层?

所以,我一般喜欢先做个考古研究,然后再给一个简单理解的方式。

比如下面这张图,就是数据仓库鼻祖Inmon大佬画的CIF架构。原图比较乱,我给加了一些注释,方便你看的更清楚一些。

右下角是业务系统,会源源不断的产生各种数据;我们右上半拉就是数据仓库以及上层的应用体系。

我们搜索一下ODS关键词,发现在两个地方都有,业务系统有一个Local ODS,数仓体系里有一个Global ODS。

这时候我们再回到ODS的名字“操作数据存储”上。顾名思义,这就是把业务操作的数据物理化存储呗。那Local ODS就是把业务数据存在本地,这是必然的,不存下来,这系统不白做了么?

好,1个业务系统是这样,那10个业务系统也是这样,比如上图中左侧的“ERP”,通常也是数仓的重要数据来源之一。Inmon老爷子还贴心的标注了数据流向。

通常来说,一个数据仓库都会从多个系统中获取数据,以获取更全面的信息。而这些系统建立的时间不一样,供应商也不一样,数据库很可能就也不一样,甚至只是文本存储。那么,不一样的数据来源,我们就给取个字数少一些的名字,就叫异构数据源。

ok,现在再去理解Global ODS就很容易理解了,这就是一个数据归集的地方,从全局视角,把每个系统的业务操作数据都堆放在这里。

为啥要有ODS?

即便是到这里,依然没有解答这哥们的问题。为啥要有ODS啊?

哥们是开发出身,他的习惯就只有一个业务库加一个测试库。所有数据到业务库里读取不就完事了么?还整一个ODS,而且结构还得跟业务库一毛一样,不仅多个事儿,而且还浪费存储,又没啥用。这不是脱了裤子放屁,多此一举么?

可能我是那种比较老实的人,也有可能我当时也有这个问题,后来就忘记了。反正我印象中是没有这么多问题的。

其实理解这个问题也很简单。你看inmon老爷子给上面架构取的名字就叫“企业信息工厂,Corporate Information Factory , CIF”。工厂么,当然得加工东西了,信息工厂就是加工信息,也就是数据的罗。

所以我们得有一个放原料的地方吧?总不可能工厂的流水线直接对准菜地吧?

诶,这个放原料的地方,就是ODS了。只不过数据跟其他实物不一样,它可以复制啊!所以我们就在数仓这里复制一份一模一样的就好了。

只不过呢,我们为了生产管理的需要,从其他原料加工厂(业务系统)里拿原料过来的同时,可能会贴上一些标签,比如是谁,什么时候,从哪里拿来的原料。这样发生问题后呢,可以方便我们回溯,找到问题的根源,重新跑一下数据也很方便。

Lucas同学明白了,我很开心,希望也能给你带来一些启发。

配合以下文章享受更佳

热文 | 如何搭建一个数据分析体系

干货 | 什么才叫做懂业务?分析的5个层次

思考 | 为什么说你的运营团队一定要有一名女生?

干货 | 一口气讲完数据仓库建模方法

干货 | 如何搭建一个数据仓库

【资料包】 实时数仓架构选型资料包

【实战】 手摸手搭建一个实时数据仓库

【干货】 数仓到底要分多少层?

我需要你的转发,小小的满足一下我的虚荣心

转载请注明:电商回忆录 » 数据仓库为什么要有ODS层?by 彭文华

喜欢 (0)

文章评论已关闭!