尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

数据域:数据仓库的骨架设计,从业务梳理到模型落地的实战指南

数据域:数据仓库的骨架设计,从业务梳理到模型落地的实战指南 1. 数据域一个被误解的“简单”概念如果你在数据仓库、数据治理或者数据分析的圈子里待过一阵子大概率听过“数据域”这个词。听起来挺高大上的对吧但每次开会当有人问“这个指标到底该归到哪个数据域”时会议室里总会陷入一阵短暂的沉默然后大家开始七嘴八舌地讨论最后往往不了了之或者强行拍板。我自己带数据团队这些年见过太多项目因为数据域划分不清导致后续的数据开发、指标管理、数据应用乱成一锅粥最后不得不推倒重来成本高得吓人。数据域到底是什么很多刚入行的朋友可能会翻看教科书或者大厂的文档得到的定义往往是“对业务过程或者数据主题的抽象和集合”。这句话没错但太抽象了跟没说一样。它既不能指导你如何动手划分也无法帮你判断划分得好坏。今天我就想抛开那些书本上的定义从一个一线实战者的角度跟你聊聊数据域这个概念的里里外外。它绝不是一个简单的分类标签而是一个贯穿数据建设生命周期的、至关重要的设计框架和管理单元。理解透了它能成为你数据体系的“骨架”理解偏了它就会变成处处掣肘的“枷锁”。简单来说你可以把数据域想象成你家里的大衣柜。数据域就是这个大衣柜本身它决定了你衣服数据的存放格局。你是按季节分春、夏、秋、冬还是按人物分爸爸的、妈妈的、孩子的或是按类型分上衣区、裤子区、外套区这个分区方式就是数据域的划分逻辑。划分得好你找一件衣服秒速定位划分得不好你可能永远找不到那只“消失的袜子”某个关键业务指标。接下来我们就一层层拆开这个“大衣柜”看看里面到底该怎么设计。2. 数据域的四大核心价值远不止于分类为什么我们要大费周章地定义数据域仅仅是为了给数据表分个类、起个名吗当然不是。一个清晰、合理的数据域设计至少能为你和你的团队带来四个层面的巨大价值这些价值直接关系到数据项目的成败和ROI投资回报率。2.1 价值一构建统一的数据认知“地图”这是数据域最基础也是最重要的价值。在一个中大型企业里市场部说的“用户”和销售部说的“客户”是一回事吗财务部核算的“收入”和业务部汇报的“流水”能直接划等号吗如果大家各说各话数据根本没法对齐更别提驱动业务了。数据域的第一个作用就是绘制一张全公司公认的“数据地图”。比如我们明确划分一个“用户域”。那么所有和“用户”这个实体相关的数据都必须归到这个域下。我们会在这个域的规范里明确定义什么是用户是注册账号的自然人还是设备ID用户的核心属性有哪些人口统计学信息、行为标签等用户相关的关键业务过程是什么注册、登录、购买、注销。当市场、销售、产品再讨论“用户”时他们指向的是同一套定义、同一批数据源沟通成本直线下降决策效率自然提升。2.2 价值二实现高效的数据资产管理与复用没有数据域数据表就像散落一地的乐高积木块你知道它们有用但不知道哪个能拼出城堡哪个能拼出汽车。数据域就是那个按照说明书业务逻辑分好类的积木盒子。当我们建立了“交易域”所有下单、支付、退款、清算相关的数据模型如表都放在这个“盒子”里。后续任何一个业务方比如风控部门想分析欺诈交易运营部门想做促销复盘需要交易数据时他不需要从成百上千张表里大海捞针而是直接进入“交易域”这个盒子寻找。域内的模型由于遵循统一的业务过程和设计规范例如都包含“订单号”、“交易时间”、“金额”、“买卖双方”等核心维度复用性极高。这避免了重复开发一个稳定可靠的交易事实表可以被无数个应用场景消费极大地节约了计算和存储成本也保证了数据口径的一致性。2.3 价值三厘清数据权责推动数据治理落地数据出了问题找谁新业务要接入数据谁来做模型设计这些日常工作中令人头疼的问题在清晰的数据域体系下会变得有章可循。每个数据域都应该有一个明确的“域主”Domain Owner或负责团队。例如“商品域”由商品中台团队负责。那么所有商品类目的定义、商品上下架状态的数据质量、商品价格变动的数据链路都由这个团队来保障和维护。其他团队消费商品数据时有了明确的对接人和责任方。数据治理的各项要求如数据标准、数据质量稽核、元数据管理、生命周期管理也可以以“域”为单位进行下达和考核使得庞大的数据治理体系能够分而治之落到实处而不是停留在纸面上。2.4 价值四支撑可扩展的、敏捷的数据架构业务是快速变化的今天可能重点做电商明天就要开拓线下门店。如果数据架构是铁板一块任何新业务接入都会牵一发而动全身导致系统重构风险极高。以数据域为单元的设计本质上是一种“高内聚、低耦合”的架构思想。“高内聚”体现在一个域内部的数据和业务逻辑紧密相关自成一个完整的业务闭环。“低耦合”体现在域与域之间通过清晰的、标准化的接口通常是关键业务实体ID如用户ID、订单ID进行关联。当需要支持一个新业务比如“社区团购”时我们不需要改动现有的“用户域”、“交易域”而是可以评估哪些域可以复用如用户域哪些需要扩展如在交易域下新增“团购订单”子类或者是否需要创建一个新的域如“团长域”。这种架构使得数据平台能够像搭积木一样快速响应业务变化支撑业务敏捷创新。3. 数据域划分的实战方法论从业务中来到模型中去知道了数据域的好那到底该怎么划分呢这是最考验数据架构师功力的地方。划分得太粗比如只分“业务数据”和“日志数据”等于没分划分得太细比如给每个业务部门甚至每个报表都建一个域又会造成管理碎片化。这里我分享一套经过多个项目验证的、自上而下与自下而上相结合的划分方法。3.1 第一步核心输入——业务过程梳理数据域划分的源头必须是业务而不是技术或数据本身。召集核心的业务方产品、运营、市场、销售等采用工作坊的形式一起梳理公司的核心业务过程。什么是业务过程它是企业活动中不可再分的行为事件通常是动词短语。例如对于电商业务核心业务过程包括“用户注册”、“用户登录”、“浏览商品”、“加入购物车”、“提交订单”、“支付订单”、“确认收货”、“申请退款”、“商品上架”、“商品下架”等。这个过程要尽可能全面可以使用价值链分析的方法从用户触达、转化、交易到服务完整地走一遍业务流程。把所有这些业务过程写在便签上贴到白板上。此时先不要急于分类重点是穷尽和共识。3.2 第二步关键动作——聚类与抽象当几十个甚至上百个业务过程摆在面前时我们就可以开始寻找它们之间的内在联系了。这个阶段的核心是“聚类”和“抽象”。聚类把描述同一类业务实体或同一类活动的过程放在一起。比如“提交订单”、“支付订单”、“确认收货”、“申请退款”这些过程都围绕“交易”这个核心活动展开它们很自然地可以聚成一类。抽象为聚好的类起一个高度概括、且被业务和技术都能理解的名字。上面那类我们可以抽象为“交易”。同理“用户注册”、“用户登录”、“完善资料”可以抽象为“用户”“浏览商品”、“搜索商品”、“收藏商品”可以抽象为“商品”或“互动”取决于划分粒度。这里有一个非常重要的原则一个业务过程必须且只能属于一个数据域。这是保证数据域“高内聚”和权责清晰的基础。如果发现某个过程比如“使用优惠券”既和交易强相关又属于营销活动就需要根据其首要的业务归属进行决策。通常优惠券的核销是交易行为的一部分但其发放和规则属于营销因此“使用优惠券”这个事实更倾向于划入“交易域”而“优惠券”这个实体本身及其发放规则可以放在“营销域”。3.3 第三步经典划分模式参考经过多个行业的实践一些通用的数据域划分模式已经形成可以作为你划分的起点和参考框架。注意这只是参考必须结合自身业务调整。主体域Party Domain描述参与业务活动的核心实体。这是最稳定、最基础的域。用户/会员域围绕C端消费者。核心实体用户。业务过程注册、登录、认证、会员升降级等。客户域围绕B端客户。核心实体企业客户。业务过程客户建档、签约、服务开通等。很多公司会将C和B统一到“用户域”但若B端业务复杂建议拆分员工域围绕内部员工。核心实体员工。业务过程入职、转岗、离职、权限变更等。产品/服务域Product/Service Domain描述企业提供的商品或服务。商品/产品域围绕可销售的商品或产品。核心实体商品/SKU。业务过程商品上架、下架、价格变更、库存变动等。服务项目域围绕提供的服务如咨询、课程、SAAS服务。核心实体服务项目。交易/履约域Transaction/Fulfillment Domain描述价值交换和交付的核心过程。这是业务的核心。交易/订单域围绕订单生命周期。核心实体订单。业务过程下单、支付、退款、发货、收货、评价等。财务域围绕资金流和会计核算。核心实体凭证、账户。业务过程记账、收款、付款、核算等。财务域通常独立且要求极高互动/行为域Interaction/Behavior Domain描述用户与产品/服务的交互行为。流量/事件域围绕用户前端行为日志。核心实体事件。业务过程页面浏览、按钮点击、搜索、播放等。这个域通常数据量巨大是用户行为分析的基础。内容域围绕用户生成内容UGC或平台内容。核心实体文章、视频、评论。业务过程发布、点赞、分享、审核等。支持与管理域Support Management Domain描述支撑业务运行的管理活动。营销域围绕营销活动。核心实体活动、优惠券。业务过程活动创建、渠道投放、优惠券发放、效果追踪等。风控域围绕风险识别与控制。核心实体风险事件、规则。业务过程规则触发、风险评分、处置等。客服域围绕客户服务。核心实体工单。业务过程工单创建、分配、处理、关单等。3.4 第四步划分原则与常见陷阱在划分过程中务必牢记并反复用以下原则检验你的方案原则一业务导向而非部门导向。数据域是对业务概念的抽象不是对当前组织架构的映射。不能因为市场部和销售部是两个部门就硬生生拆出“市场域”和“销售域”。这会导致数据割裂。应该看他们共同处理的业务实体和过程比如可能都归属于“客户域”或“商机域”。原则二稳定性优先。数据域一旦确定不应频繁变更。因此划分时要抓住业务中最本质、最稳定的部分。例如“用户”、“商品”、“交易”是稳定的核心域而“直播带货”、“社区团购”可能是特定业务模式初期可以作为某个核心域下的子主题待其发展成熟、模式稳定后再考虑是否独立成域。原则三粒度适中可管理。通常一个中等规模的互联网公司核心数据域在8-15个之间比较合适。太少则管理粗放太多则过于复杂。对于超大型集团可以采用“集团级域”和“业务单元级子域”的多级结构。常见陷阱按数据源或系统划分错误地设立“CRM域”、“ERP域”。这会导致同一个业务实体如客户的数据散落在不同域无法整合。按数据技术类型划分设立“日志域”、“业务库域”、“维度域”。这完全是技术视角对业务方毫无意义。追求一步到位、大而全试图在项目初期就定义出完美无缺、覆盖未来五年的数据域体系。这往往导致讨论陷入僵局。应采用迭代方式先定义最核心、最迫切的3-5个域随着项目推进和业务发展逐步扩展和调整。4. 数据域在数据仓库中的落地体现划分好了数据域它如何在具体的数据仓库如维度建模中体现出来呢这不仅仅是给数据库Schema或文件夹起个名字那么简单它需要贯穿模型设计、分层架构和命名规范。4.1 在模型设计中的体现数据域是指导维度建模特别是事实表设计的重要框架。在Kimball的维度建模理论中事实表对应业务过程。而我们之前已经将业务过程聚类到了不同的数据域中。因此一个数据域下会包含一个或多个核心事实表。例如“交易域”下必然有“交易事实表”核心业务过程就是“支付订单”。与该域强相关的维度表也建议归属于该域或者通过明确的关联关系进行管理。例如“商品维度表”自然属于“商品域”但它会被“交易事实表”频繁引用。在设计跨域的数据模型如宽表时数据域的划分能清晰地告诉你你需要从哪几个“盒子”里取出哪些“积木”事实和维度进行拼接。4.2 在分层架构中的体现经典的数据仓库分层包括ODS操作数据层、DWD明细数据层、DWS汇总数据层、ADS应用数据层。数据域主要在DWD和DWS层发挥核心组织作用。DWD层明细数据层这是数据域体现得最彻底的一层。通常我们会按照数据域来建立不同的数据库Schema或者目录Hive Database。例如dwd_trade_db -- 交易域明细层数据库 ├── fact_order_detail -- 订单明细事实表 ├── fact_payment_detail -- 支付明细事实表 └── dim_order_status -- 订单状态维度表属于交易域 dwd_user_db -- 用户域明细层数据库 ├── fact_user_login -- 用户登录事实表 ├── fact_user_register -- 用户注册事实表 └── dim_user -- 用户维度表这种划分使得DWD层结构清晰权责明确。每个域的开发团队可以专注于自己域内的模型建设和数据质量。DWS层汇总数据层与ADS层应用数据层这两层通常以主题或应用为导向可能会跨域整合数据。但它们的加工源头DWD层是清晰的血缘关系可追溯。例如一个“用户生命周期主题宽表”在DWS层它会从dwd_user_db、dwd_trade_db、dwd_event_db中抽取相关指标进行汇总但其数据来源的域归属是明确的。4.3 在命名规范中的体现一套好的命名规范能将数据域的价值固化下来。建议在表名中嵌入数据域前缀或缩写。表命名示例dwd_{domain_abbr}_{table_name}。例如dwd_trade_order_detail(交易域订单明细表)dwd_user_login_di(用户域登录日增量表di表示每日增量)dims_product_sku(商品域SKU维度表dims表示共享维度层)字段命名对于跨域通用的关键实体ID应保持绝对一致如user_id、order_id、product_id。这是域与域之间能够“对话”的桥梁。5. 从设计到运营数据域的全生命周期管理数据域的建设不是一锤子买卖设计出来只是第一步。要让其持续发挥作用必须配以相应的运营管理机制。5.1 确立域主Domain Owner责任制每个数据域必须指定唯一的域主通常是对应业务领域最资深的数据产品经理或数据分析师和备份域主。域主的职责包括定义与维护负责该数据域的业务定义、边界、核心实体和业务过程的维护与更新。模型评审评审所有归属于或关联到该域的数据模型设计确保符合域规范。质量监控制定并监控该域核心数据的质量标准和稽核规则。需求对接作为该域数据的统一对外接口人受理其他团队的数据需求。知识传承编写和维护该域的数据字典、业务术语说明和使用指南。5.2 建立数据域的注册与发布流程数据域本身作为一种重要的数据资产也需要被管理起来。建议在数据治理平台或元数据中心中建立“数据域”这个元数据实体。注册信息包含域名称、编码、域主、业务定义、包含的核心业务过程列表、核心实体列表、关联的物理数据库/Schema等。发布与变更数据域的新增、合并、拆分、废止需要经过正式的需求评审和架构委员会审批并在元数据中心更新发布通知所有相关方。变更必须谨慎因为会影响下游大量模型和应用。5.3 以域为单元进行数据治理将庞大的数据治理任务分解到各个域使其变得可执行、可考核。数据标准在域内统一关键业务术语的定义和计算口径。例如在“交易域”内统一定义“GMV”是否剔除退款、是否包含运费。数据质量为每个域定义核心质量指标如“交易域订单表的每日增量非空率”、“用户域用户ID唯一性”并配置稽核任务由域主负责跟进整改。数据安全在域级别设置数据安全等级和访问权限模板。例如“财务域”的数据安全等级为“高”访问需要特殊审批。数据生命周期制定域内数据的分级存储和归档策略。例如“流量域”的原始明细日志保留30天聚合摘要数据保留2年。5.4 应对业务变化的域演进策略业务总是在创新和变化数据域体系也需要保持一定的弹性。面对新业务通常有几种演进策略纳入现有域如果新业务是现有核心业务的自然延伸其数据可以纳入现有域。例如电商平台新增“直播带货”功能其产生的交易数据完全可以并入现有的“交易域”只需在订单事实表中增加“交易类型直播”的标识并可能扩展一些直播特有的维度如直播间ID、主播ID。创建子域/主题如果新业务模式相对独立但与现有域有较强关联可以在现有域下创建子域或主题。例如在“用户域”下创建“会员成长主题”专门管理会员等级、积分、权益等数据。创建新域当新业务模式与现有业务本质不同且达到一定规模时应考虑创建新域。例如一个主营实物电商的公司开始大规模开展“本地生活”业务如外卖、到店。虽然都有“交易”但背后的业务实体商户 vs 商品、履约流程线下服务 vs 物流配送差异巨大此时独立建立“本地生活域”可能是更清晰的选择。关键在于任何演进都应该是深思熟虑、有记录、有沟通的避免随意和混乱。数据域的体系就像城市的规划既要有清晰的主干道核心域也要为未来的新区新业务留出扩展空间。
返回列表