(以下文章来源于大飞谈技术 ,作者常大飞)
为了清晰数据结构,方便数据血缘跟踪,减少重复开发,简化复杂问题,屏蔽原始数据的异常与业务的影响,在设计数据仓库体系时通常需要对其逻辑分层。
1. 清晰数据结构一般我们将数据仓库分为ODS层(原始数据层)、DWD层(明细数据层)、DWS层(数据汇总层)和ADS层(数据应用层)。每一个分层都有它自己的作用域,并且我们在设计数据仓库时会为每个分层的表设置各自的命名规范,这样我们在使用表的时候能更方便的定位和理解数据。另外,数据仓库的数据是来源于不同的业务系统,比如客户信息同时存在于CRM系统、订单系统、营销系统等,取数时该如何决策呢?数据仓库会对相同主题的数据进行统一建模,把复杂的数据关系梳理成条理清晰的数据模型。
2. 数据血缘跟踪通过数据仓库中的逻辑分层,确定每一层的数据来源,如果有一张来源表出问题了,我们能够快速准确地定位问题,并清楚的知道它的影响范围。同时我们会制定每一层的调用规范:
3. 数据复用数据的逐层加工,下层包含了上层数据加工所需要的全量数据,这样的加工方式避免了每个数据开发人员都重新从源系统中抽取数据进行加工。通过汇总层的引入,面向不同主题的数据集市可以共用汇总层数据,实现了计算结果的复用,节省了数据开发人员的时间和精力。
4. 复杂问题简单化将一个复杂的任务分解成多个步骤完成,每一层只处理单一的步骤,比较简单且容易理解,便于维护数据的准确性。当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
5. 屏蔽原始数据异常对业务的影响数据仓库对接的源系统众多,且每个源系统的表命名、字段命名、字段含义等各有不同,通过数据仓库的分层设计,从底层来规范和屏蔽所有这些复杂性,保证下游数据用户使用数据的便捷和规范。如果源系统发生变更,只需要再相应的数据仓库层来处理,对下游用户透明,无感。