数仓疑惑:深度解析数据域和主题域的区别?
在数仓岗位面试中,数据域和主题域是两个被高频问到的面试题,这两个概念又常常令人混淆。甚至有很多同学在企业数仓建设中也不清楚到底是按照数据域对数据进行分类还是按照主题域进行分类。这个概念的理解无论是对刚参加工作的小白同学,还是工作五六年,甚至对于一些已经具备一定架构管理经验的同学来说,都不是很清晰。
深入理解它们的区别、划分方法以及在不同场景下的应用,对于构建高效、灵活且能满足企业业务需求的数仓体系具有重要意义。
1.数据域与主题域的概念引入
1.1 数据仓库的核心要义
数据仓库作为一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,其主要目的在于支持企业的管理决策。企业构建的数据仓库就如同一个精心整理的知识库一样,需要能让使用者在其中准确、快速地获取所需信息,这就要求数仓具备良好的组织结构,对其中的数据进行有序分类、存储与管理。如何对数据进行有效的组织,这就是我们涤生课程上经常讲到的"横向分层,纵向分域", 这个分层就是数仓分层,分域就是数据域或者主题域。通过这种结构化的划分方法,能让原本杂乱的数据分类更加清晰,能让数据的开发者以及数据的使用者更加准确、快速地查找到他想要的数据。
1.2 主题域的概念及特点
主题域是从业务视角出发,自上而下进行分析而得出的概念。它是从整体业务环节中升华出来的大的专项分析模块,通过结合对接的业务范围和行业形态,从更高的视角去洞察整个业务流程。例如,在分析金融产品(如贷款、赊购等)业务时,若从风控管理分析、营销活动分析等更高角度去获取专题分析内容,这部分升华出来的内容便是主题域。
主题域通常是联系较为紧密的数据主题的集合,其划分依据业务需求分析的视角进行抽象归类。常见的划分方法有多种:
按业务部门划分:像中台部门、业务运营部门、供应链部门等,每个业务部门可抽象出一个主题域,并且还能根据部门的业务运作流程进一步划分出二级主题,比如人力主题域可细分为招聘、培训、绩效、薪酬、人事变动等业务过程作为二级主题。
按业务系统划分:对于制造业、零售业等实体经济行业,数仓主题划分常与业务系统挂钩。比如进销存业务对应的采购系统、销售系统、库存系统,可构建出采购主题、销售主题、库存主题等对应主题的数据仓库,再依据各自系统的“菜单” 划分二级主题,此时主题划分类似系统菜单栏在数仓的层级体现。
按行业案例划分:在一些数仓建设应用较早的行业,如电信、金融等,行业内已形成规范的主题划分方案(如 Teradata 公司的 FS-LDM 十大金融主题模型等),在进行数仓主题划分时,可参考这些行业典型案例来划分主题。
1.3 数据域的概念及特点
数据域则是从数据视角出发,自下而上搭建而成。它对每个业务环节进行切割划分,形成不同环节的数据集,进而组装为完整的业务流程。仍以金融信贷产品业务为例,按照其业务生命周期拆解为贷前(展业营销、身份识别、征信核实等)、贷中(贷款申请、贷款发放、还款等)、贷后(催收、追缴、核销等)等阶段,贷前中的环节内容就可看作是数据域。
数据域是指面向业务分析,将业务过程或者维度进行抽象的集合。为保障整个体系的生命力,数据域需要不断进行抽象提炼,并长期维护更新。在划分数据域时,既要能涵盖当前所有的业务需求,又要确保新业务进入时能被包含进已有的数据域或可扩展出新的数据域。数据域的划分工作一般在业务调研之后开展,需分析各个业务模块中的业务活动。它是 CDM 层的顶层划分,是对企业业务的抽象提炼,面向业务分析,包含当前所有业务需求,也便于未来扩展。
2.数据域与主题域的区别
2.数据域与主题域的区别
2.1 划分视角与方式
主题域:从业务分析的宏观角度出发,自上而下地依据业务需求、业务部门、业务系统或行业案例等多种因素进行划分,重点在于从整体业务中提炼出具有专项分析价值的模块。
数据域:从数据本身的角度出发,自下而上地对业务环节进行切割划分,通过分析各个业务环节产生的数据来形成不同的数据集,进而构建出完整的业务流程相关的数据域。
2.2 驱动因素与目标
主题域:是业务驱动的体现,其主要目的是围绕业务需求构建分析场景,以便从更高层面洞察业务流程,为管理决策提供支持。例如,通过对特定主题域的分析,能了解到某个业务领域的整体情况,从而制定相应的策略。
数据域:是数据驱动业务的表现形式,旨在对数据进行分类整理,使数据能够更好地赋能业务。通过合理划分数据域,可确保数据在数仓中的有序存储和高效管理,为后续的数据处理和分析奠定基础。
2.3 应用层级与场景
主题域:通常在针对公共汇总层(DWS)和数据集市(DM)进行主题划分时发挥作用,它将业务活动事件进行抽象集合,以便在数仓建设中根据不同的主题域来组织和分析数据。比如在 AdventureWorks DW 数据仓库的概念模型设计中,通过确定 “销售分析” 主题域,并围绕 “商品” 主题进行建设,经营者可对整个企业的经营状况有较全面的了解。
数据域:主要针对公共明细层(DWD)或者维度层(DIM)进行划分,是对业务过程或维度的抽象集合。例如在线教育公司可按照用户企业的部门、业务过程或业务板块中的功能模块等方式划分出不同的数据域,为数据的汇总和分析提供基础架构。
3.数据域与主题域的划分要点及注意事项
3.数据域与主题域的划分要点及注意事项
3.1 主题域划分要点
主题域划分一般较为谨慎,一旦确定下来应尽量避免频繁变动。虽然数仓建设是迭代进行的,难以一次性初始化好,但在划分主题域和主题时,应尽可能涵盖企业的所有业务,并且要确保在新业务进入时能够无影响地被包含进来并可扩展主题域。
在进行主题划分时,可先从全局视角出发划分出主题域,再在主题域内划分出各个主题。确定主题边界需要进一步理解业务关系,在确定整个分析主题后,还需对这些主题进行初步的细化以获取准确的主题边界。
数据域划分要做到不重不漏,确保每个表都在一个域里,且只在一个域里,实现精确定位。
每个域下可根据需要再分子域,层级不限,以提供最自由方便的划分方式。但如果划分了子域,表应放在最底层的域中,这样在进行树状目录管理时会更加方便。
最好保证每个域下的子域数量或表数量在合理范围内,数量过多会导致不方便记忆和管理,数量过少则可能失去划分的意义。
4.总结
4.总结
尽管数据域和主题域在概念、划分方式、驱动因素等方面存在差异,但它们最终都是对数仓中的数据进行分类整理,只是一个是从数据视角出发,一个是从业务视角出发。其根本目的在于统一规则,方便管理,使数据易于理解,提高开发效率,进而能够快速服务于各种业务场景。
在实际的数仓建设中,可根据不同的业务需求和场景,灵活运用数据域和主题域的划分方法。例如,个人建议在 DWD/DIM 层可以按照数据域进行分类,DWS/DM 层可以按照主题域划分,ADS 层可以按照分析主题域(业务场景)划分。通过合理运用这两个概念,能够构建出更加完善、高效的数仓体系,为企业的数字化转型和业务发展提供有力支持。
涤生大数据往期精彩推荐
8.SQL之优化篇:一文搞懂如何优化线上任务性能,增效降本!
10.基于FlinkSQL +Hbase在O2O场景营销域实时数仓的实践
12.涤生大数据实战:基于Flink+ODPS历史累计计算项目分析与优化(一)
13.涤生大数据实战:基于Flink+ODPS历史累计计算项目分析与优化(二)
14.5分钟了解实时车联网,车联网(IoV)OLAP 解决方案是怎样的?
15.企业级Apache Kafka集群策略:Kakfa最佳实践总结
20.大数据实战:基于Flink+ODPS进行最近N天实时标签构建
25.玩转大厂金融风控体系建设
26.实际开发中:如何有效运用Spark Catalyst的执行流程
27.Doris企业架构选型总结:存算分离与一体化的对比与应用场景分析
28.详解用户画像的标签体系