资讯详情

数仓分层剖析,一文了解企业数仓分层

从事数字仓库相关人员知道数字仓库模型设计的主要工作之一是模型分层,可见模型分层在模型设计过程中的重要性,优秀的分层设计是数字仓库项目建设成功的核心要素,使数据易于理解和高复用是分层的核心目标。

早期,作者在考虑公司数字仓库的指定分层规范时,也检查了大量的信息,在线信息也相对全面,有阿里巴巴大数据分层方案的使用,也有三层,或四五层,所以很多分层思路,让作者头痛。因此,作者希望整理一篇文章,对数字仓库的分层进行更全面的分析,谈谈他们对分层的看法和想法,并与您沟通。

本文将对数据仓库整理数据仓库的分层方法,包括以下内容:

1、介绍为什么分层,分层的作用,核心思想 2.提出一般数据分层设计和分层设计原则 3.讲述一些不同的分层思路,每个大工厂的分层思路 4.讲述可落地的实践意见

数仓分层意义,也可以说为什么数仓分层?

数据清洗过程可以通过数据分层管理简化,因为原来的一步工作分为多个步骤,每个层处理逻辑相对简单易理解,从而达到解耦的目的,使我们更容易确保每个步骤的正确性,当数据错误时,方便问题调查和可追溯性定位。

数仓分层的核心思想?

分层的核心思想是解耦,然后简化复杂的问题,直接影响数据架构的分层。

数仓分层的好处

数据分层将给我们带来以下好处: 1、清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解 2.减少重复开发:规范数据分层,开发一些通用的中间层数据,可以大大减少重复计算 3.统一数据口径:通过数据分层提供统一的数据出口和统一的外部输出 4.简化复杂的问题:将复杂的任务分解成多个步骤,每层解决特定的问题

一般分层结构

这里介绍一种常见且适用的四层分层结构。至于来源,我觉得应该是阿里。感兴趣的同学可以看《大数据之路:阿里巴巴大数据实践》一书。

层级 说明 描述 备注
ODS (Operation Data Store) 原始数据层 将未处理的原始数据存储到数据仓库系统中,结构与源系统一致,是数据仓库的数据准备区,原则上保留了所有数据
DWD(Data Warehouse Detail) 明细数据层 以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。数据粒度一般保持和ODS层相同,并提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层将采用一些维度退化技术,将维度退化到事实表中,减少事实表与维表的关联。同时,明细宽表将用于减少数据扫描。 数据公共层CDM
(Data WareHouse Summary) 公共汇总层 以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。 数据公共层CDM
DIM(Dimension) 公共维度层 基于维度建模理念,建立整个企业的一致性维度。降低数据计算口径和算法不一致的风险 数据公共层CDM
ADS(Application Data Service) 数据应用层 又称数据应用层DM(数据集市)或APP面对实际数据需求,层等可直接用于业务人员DWD或者DWS基于层数据,形成各种统计报表。此外,还有一些直接的表达形式,如主题大宽度表市场、横表转纵表等。

数据公共层CDM(Common Data Model)或者 企业级数据仓库EDW (Enterprise Data Warehouse)主要用于存储详细事实数据、维表数据和公共指标汇总数据,其中详细事实数据和维表数据一般基于ODS层数据加工生成;大数据培训公共指标汇总数据一般根据维度表数据和详细事实数据处理生成。维度模型作为建模方法的理论基础,通过一些维度退化手段将维度退化到事实表中,减少维度表与事实表之间的关联,提高数据的可用性。

一些不同的分层思路(大厂数仓分层案例)

爱奇艺数仓分层架构

从上图可以看出,与分层和一般分层架构没有太大区别。它还包括原始数据层、细节层、汇总层、应用层和统一维度层。以下是一些不同的地方。

在爱奇艺的架构中,底层是统一的数字仓库,实际上是整合原始数据层、统一的细节数据层和统一的聚合数据层。细节层负责连接下层所有原始数据,100%恢复所有业务领域和业务流程的数据,屏蔽底层原始数据变化对上层的影响,是整个爱奇艺数字仓库的基础。

底层是统一的数字仓库,主要分为统一的细节数据层和统一的聚合数据层。细节层负责连接下层的所有原始数据,100%恢复所有业务领域和业务流程的数据,并屏蔽底层原始数据变化对上层的影响 2.0 底层基础。

完成与数据关系相关的逻辑转换,补充相关维度,保存最细粒度数据,进行复杂的业务逻辑分离、数据清理、统一标准化的数据格式等 ETL 过程。

聚合层负责沉淀一般指标,提供统一口径的计算指标,避免重复计算。此外,它还将基于 OneID 统一累计设备库和新设备库供上层使用。

业务集市主要以业务需求为主,建立各种满足业务分析的数据集。在业务市场建设过程中,业务市场按尽可能细的粒度进行划分,每个业务市场之间不会出现数据依赖和横向引用。在应用层中,可以通过汇总计算提供数据服务。这样做的好处是,如果有一些组织结构调整或工作职责变更,每个业务市场不需要调整,只需在应用层进行相应的修改,同时避免计算任务代码混合、数据权限拆分等问题造成的数据变更成本。

主题仓库以公司范围内的公共主题域/主题为基础,进行数据整合分析及相关建设,包括流量仓库、内容仓库、用户仓库等。

应用层包括业务报表、内容分析、用户操作等数据应用产品,根据具体场景和需求,从业务市场和主题仓库获取数据。

SaaS收银操作数仓分层架构

这里作者的案例是美团网站分享的SaaS出纳操作仓库建设文章中的架构,分层架构约为五层,虽然从名称和一般分层架构差异较大,但实际具体功能,只增加了一个DWT主题宽表层,APP层和通用的ADS层的作用基本相同,DWA汇总层实际上是通用的DWS层类似。

DWT层主题宽表层其实是对的DWD各级信息进行join整合,基于主题,处理与业务流程相关的数据冗余,方便上层DWS使用汇总数据。

美团数仓分层架构

从上图来看,美团数字仓库的分层结构和一般分层结构似乎也有很大的不同,但事实上,它与一般的分层结构相似,只是更新数据点,做更多的解耦。

ODS不用说,数据源层的名称与一般原始数据层一致,以下主要是以下四层:

IDL数据集成层,整合多数据源的一致性建模,完成数据维度和事实组合。这一层要注意两个特殊的概念,一个是宽表,个是聚合表。宽表与 kimball 的 fact table 不同的是,我们通常所说的fact table,事实上,它只是明细表的总称,而宽表则是将相关事实表整合在一起。这样做的好处是加快速度和更全面的查询。这快你看和《SaaS收银运营数仓建设案例DWT多么相识。

CDL数据组件层,用于完成聚合汇总,进一步按粒度划分,完成年月日级的聚合。到目前为止,中央数据仓库已经完成。

MDL数据及时层,根据业务单位,进行数据市场。例如,运营,销售。这样提供给数据应用层,就有了一个完整的、可重用的数据源。

1M0t81

最终的ADL应用层要简单得多,主要是选择,即对于业务数据应用,将选择哪些数据库技术、分析引擎技术和报告计算,总结,不能与存储、计算、可视化分开。

网易严选数仓分层架构

这里简单说一下。其实网易严格选择数仓分层架构和一般数仓分层架构差别不大,可以算是直观使用的体现。

严选数仓分层模型将数据分为三层,ods,dw和dm层。其中ods操作数据层,保留最原始的数据;dw包含dwd和dws中间层由两层组成;dm是应用层基于dw层做汇总加工,满足各产品、分析师和业务方的需求。

层级 说明 描述 备注
ODS (Operation Data Store) 操作数据层 不对外开放,把业务系统数据同步到数仓。数据格式保留业务系统的数据格式;目前主要通过datahub解析binlog来实现的,目前严选的ods层数据同步主要以全量数据为主。
DWD(Data Warehouse Detail) 明细数据层 对外开放,主要作用是沉淀一些公共的逻辑,常用维度属性的关联等,下游经常在一起使用的模型会在这一层做宽表处理,减少事实表和维表的关联,减少重复的关联加工。 dw层
(Data WareHouse Summary) 公共汇总层 对外开放,主要沉淀严选数据的公共指标,dws层是整个严选数据对外开放和使用的核心,是严选最核心的数据资产。 dw层
DIM(Dimension) 公共维度层 对外开放,主要是一些常用维表,比如商品维表、sku维表、渠道维表。 dw层
DM 应用层 对产品开放使用,支持数据产品、报表的使用,主要是不公用复杂指标的汇总和计算。

网易云音乐数仓分层架构

分享作者数仓分层架构

不多说,这里不同之处在与增加了stg缓冲层,用于存储每天的增量数据和变更数据,配合ODS对数据进行沉淀,减少了抽取的复杂性,比如进行增量数据的合并操作等。

讲一下个人对如何设计数仓分层架构的想法(数仓到底分几层)

数据仓库分层没有绝对的规范,适合的就是最好的,至于分几层,建议按照目前的业务和建设现状,进行合理解构和分层设计,一般刚开始做,建议3、4层。规划1-1.5年的架构,然后不断的建设、优化、再优化。不断逼近满足所有需求。

下面针对一些场景说下分层的想法: 场景一:时间紧任务重,急于看结果

这种场景,直接连各个业务数据库,抽取数据到大数据平台,根据需求组合join或者汇总count、sum就行,就不要不分层了,作者现在公司服务的数仓项目前身就是这样,将各个业务系统数据抽取到oracle,你看都没有大数据平台就做了。

场景二:公司业务简单,且相对比较固定,数据来源不多,结构也很清晰,需求也不多 那么还弄啥来,直接使用通用的数仓架构就行,ODS起到解耦业务数据库+异构数据源的问题,DWD解决数据脏乱差的问题,DWS服用的指标计算,ADS直接面向前台业务需求。

场景三:公司业务复杂,业务变化较快 那就多一层DWT层做汇总,多一层解耦,业务变化的时候,我们只改DWS层就好了,最多穿透到DWT层。业务变化的时候调整一下,工作量也不会太大,最重要的是能保证底层结构的稳定和数据分析的可持续性。

场景四:公司业务较为复杂,集团性公司,下辖多个bu,bu间业务内容交叉不大 可以在数仓通用分层架构上,增加一层DM层,也就是数据集市层,各个数据集市层,单独供数,甚至有单独的计算资源,这样可以避免因为计算任务代码混在一起、数据权限拆分等问题带来的数据变更成本。

一个好的数仓模型分层,应该具备的要素

一个好的数仓模型分层,应该具备的要素是数据模型可复用,完善且规范的。

从完善度上来讲,主要衡量DWD层和汇总层两块的完善度,DWD层完善度,主要是希望DWD等尽可能被汇总层引用,ODS层被除了DWD层外的尽可能少的引用,最好是没有。

标签: t81光电开关传感器传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台