大数据应用实战
曹犟
神策数据联合创始人 & CTO
1086 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 14 讲/共 30 讲
大数据应用实战
15
15
1.0x
00:00/00:00
登录|注册

12|数据模型:从业务需求到数据结构的“翻译器”

你好,我是曹犟。
在上一节课中,我们学习了元数据管理和数据分层,了解了如何让数据资产从混沌走向有序。
今天,我们要讨论另一个数据治理的核心话题:数据模型。

从一个真实的故事说起

我先分享一个真实的故事。有一家游戏公司,最初只做手游,当时在构建用户数仓的时候,数据模型就按照手游的特点进行了设计,简单直接。后来公司逐步发展,开始扩展到 PC 游戏、主机游戏,而每上线一个新平台,就单独建一套表。
几年后,平台上一共有了几百张表,同样是统计“日活跃用户”,手游看 login_mobile 表,PC 游戏看 login_pc 表,主机游戏看 login_console 表。更要命的是,每个平台的表结构还不一样,对用户的标识也不一样:手游上记录设备 ID,PC 游戏记录 MAC 地址,主机游戏记录的则是 PS 和 Xbox 各自的账号 ID。
于是,哪怕是领导想看“全平台日活”这么简单的一个需求,数据分析师都要写很复杂的 SQL。需要先分别从不同的表中做查询,再去重合并。更糟的是,同一个玩家在不同平台的账号对不上,跨平台的用户关联根本做不了。
最后公司不得不下决心重构整个数据仓库,停掉所有新需求三个月,数据重做和数据 diff 的过程让相关同事都感觉像掉了一层皮。而如果一开始就考虑到未来的多平台扩展,设计一个通用的、可扩展的数据模型,就不会付出这么大的代价了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 数据模型是对现实世界的数据化描述,定义了数据的结构、关系和约束,是理解和组织数据的框架。 2. 数据模型通常分为三个层次:概念层、逻辑层和物理层,分别对应业务分析的视角、系统设计的视角和具体实现的视角。 3. 主流的数据建模方法包括范式建模(E-R模型)、维度建模和宽表模型,它们各自有优势和缺点,适用于不同的业务场景。 4. 在实际的大数据实践中,通常三种建模方式会结合使用,并且通常也不会严格保证各种范式,而是根据应用场景做必要的折衷与裁剪。 5. 从业务需求到数据模型的转化过程包括需求收集、概念设计、逻辑设计和物理优化,以及为变化预留空间和保持一致性的原则。 6. 在数据模型设计中,不要过度设计,为变化预留空间,保持一致性,并重视文档的编写。 7. DWD 层的数据模型变化中,最初采用了简单的Event-User模型,后引入维度表设计以满足复杂的分析需求。 8. 随着客户规模扩大,需求也变得复杂,很多分析需求需要结合商品、渠道、活动等维度进行分析,因此引入了维度表设计。 9. 数据模型需要不断优化,根据业务发展进行调整,但每次改动都要考虑兼容性,不能影响现有应用。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大数据应用实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • 大寒
    * 思考题一:应该说是经历两个大版本迭代才形成了公司今日数仓,第一个版本时候(我刚到公司实习时)还是基础-中间-应用,层次划分并未按照流行的方式来做并且中间层建设的非常差,所以基本就是基础-应用,所有逻辑都由分析师自行决定,效果就是同一个指标不同报表经常不一样。 第二版迭代时候尝试用流行思路来做,但是是和分析师共同开发,结果因为视角不同造成开发非常混乱(比如层级反向依赖),并且数据开发不了解业务全貌最后又演变成了第一版遇到的问题。最后下定决心由数仓开发统一来做,定好规范深入了解业务现状才慢慢改善,目前遇到的问题是随着大批量模型表设计完成开发,增量任务会让开发人员不屑于去花时间了解,最后做成了一个数据表一个明细表的一一对应建设,没有做整合。总结来说就是开发人员绷着的弦儿懈怠下来后很难再次绷紧,慢慢又会回到最初的困境中。 * 思考题二:最基础的应该是客户,骑手,商铺这三个实体,业务过程即为用户在外卖平台上的某个商铺下单菜品然后由骑手取餐后送到客户手中。实际过程中用户会浏览和搜索菜品,因此至少需要增加菜品和商铺分类这些实体(不往下细究,因为我也没设计过外卖平台的数据模型)用以支撑用户搜索与下单。至于后续的分析向和推荐向内容,比如埋点类的我感觉这里讨论起来会乱套,所以不在此处赘述。 商铺分类-商铺-菜品这类用关系表描述即可,其实这三个可以作为下钻的维度来组合;而骑手这里(不太了解具体运行机制,所以不想设计过多实体如骑手所属公司等)和商铺关系,商铺客户关系,骑手与客户关系用事务表更好:其中商铺-骑手-客户可以维护出取餐送餐这一事务过程,商铺客户维护下单销售这一事务过程(同时夹杂类似于物流结果的展示,比如已送达等) * 思考题三:我觉得一个是支持非结构化数据原始存储与向量化存储,因为从我的了解来说当前AI的主流思路是输入数据的embedding,那么就需要我们的数据模型支持这种embedding后的高维数据存储。我目前在实践中AI还停留在dify搭建工作流阶段,所以能想到的结合场景只有这么多。
    2025-11-19归属地:北京
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部