小白入门之数据建模-以兴趣社区为例

简介: 本文作者分享了一些对数据建模的理解,并以社区业务为例展开讨论。

作为一名练习时间1年的数据研发练习生,这一年里我在业务需求中摸爬滚打,系统地学习了数据建模。在这里我想分享一些我对数据建模的理解,并以我支持的社区业务为例展开讨论,如果有任何不足之处,欢迎大家交流指正。


什么是数据

数据是什么:让我们来看一下官方定义,数据是对客观事物的数量、属性、位置及其相互关系的抽象表示,是对信息的记录。这个解释比较抽象,其实我理解,凡是可以被记录的,都是数据。


数据从哪里来,到哪里去:数据不是天然存在的,而是被生产出来的,从原始数据生产-> 数据采集-> 数据加工-> 数据分析挖掘,进而形成知识,再循环到指导原始数据生产,这里有两个关键要素:


  • 数据源:数据描述的对象;
  • 数据生产:对该对象的数字化记录、描述和呈现,即数据化的过程;


DIKW框架:数据(data) -> 信息(information) -> 知识(knowledge) -> 智慧(wisdom)


数据是未加工的原材料,简单的事实记录。经过加工处理后,就形成了信息,能够回答一些简单问题。对信息再进行总结归纳,将其体系化,信息之间产生了联系,就形成了知识。而智慧则是在理论知识的基础上,加上自身实践,得出的人生经验或对世界的看法,具有较强的主观色彩。

image.png


什么是数据建模

数据建模即构建数据模型,数据模型=数据组件+关系+规约。

image.png

为什么要数据建模呢?本质是为了有序有结构地分类存储和组织数据,我们可以从规范,效率,成本三个角度考虑:


  • 规范:指导生产用户进行规范化研发,保障数据的规范化和一致性;
  • 效率:消费用户易查找、易理解、易使用、产出稳定、使用性能优;
  • 成本:存储成本/计算成本消耗合理,计算性能优;


数据建模总体流程

image.png


概念建模设计

数据建模的第一阶段是概念建模设计,将业务领域知识转化为图形化表达。这样可以指导后续的逻辑建模,并方便数据消费者查找和使用数据。概念建模的第一步是需求调研,包括业务调研和需求分析两方面:


  • 业务调研:自底向上,了解业务源系统;
  • 需求分析:自顶向下,收集分析师和运营人员对数据或报表的需求;


下一步是进行数据域划分,这意味着要根据面向业务的分析,将业务过程或维度进行抽象,然后划分出单独的模块。最后构建总线矩阵,明确业务过程所属的数据模块,并确定业务过程与维度之间的关系。


逻辑建模设计

image.png

接下来我们进入到逻辑建模设计,第一步要做的是明确并规范定义指标与维度。首先,我们需要明确各个维度及其对应的属性,然后需要明确原子指标和派生指标。原子指标是针对特定业务过程的度量,不可再细分,具有明确的业务含义;派生指标是对原子指标在特定业务统计范围下的限定,下面我们将正式进入明细层模型设计。


构建一致性维表-DIM层


维度是维度建模的基础和灵魂,如何构建一致性维表,维度表设计过程如下:


  • 第一步:选择业务对象;
  • 第二步:定义维度属性;
  • 第三步:定义关联维度;
  • 第四步:冗余维度;


设计TIPS


  • 主键标识:

维度表必须要有唯一主键标识,可通过配置DQC强规则保证主键唯一性;(ps:记得很久以前弱弱问了老板一句,维表一定要有主键么?被老板白了一眼,从此铭记于心!

  • 水平拆分/垂直拆分:

当出现以下情况时,可以将维度的不同分类实例化为不同维度:

(1)不同业务属性差异比较大或者数据量差异大,例如淘宝商品、天猫商品、1688商品,有公共属性,也有各自独特的属性,这时候将所有可能的属性建立在一个表里不切实际;

(2)业务的关联程度较低,对于两个相关性较低的业务,耦合在一起弊大于利,影响模型稳定性和易用性;


维度属性相同的数据,可以将产出时间晚/运行不稳定/口径变化频繁/热度低较少使用的属性拆分至单独表:

(1)主维表存放稳定、产出时间早、热度高的属性;

(2)从维表存放变化较快、产出时间晚、热度低的属性;


  • dt每日全量记历史/拉链记历史:

拉链记历史:存储计算成本低、运维成本高、使用成本稍高;

dt记历史:存储计算成本高、运维成本低、使用成本低;


  • 维表命名规范:

{project_name}.dim_{业务关键字}[_{数据单元}]_{维度缩写}[_{自定义标签缩写}];

按天调度,省略后缀dd;按小时调度,添加后缀hd;


构建明细事实表-DWD层

明细事实表分为事务事实表、周期快照事实表和累计快照事实表,具体分类如下:

image.png


明细事实表设计过程如下:

  • 第一步:选择业务过程,事务事实表的典型特征是限定发生时间等于当天,以解决数据漂移;
  • 第二步:声明粒度,事务事实表的粒度表达有多种方式,快照事实表的粒度通常以维度或维度组合形式声明;
  • 第三步:确定维度;
  • 第四步:确定事实 仅包含与业务过程相关的事实;
  • 第五步:冗余维度;


设计TIPS


  • DWD设计的首要原则是稳定,提供最明细的数据,尽量与原系统保持一致,保持足够多信息;
  • 从ODS表中提取数据时,需要考虑脏数据的过滤,以及将数据解析成下游可以直接消费的数据,比如枚举值的加工和日志扩展字段的解析;
  • 冗余维度属性时,对于经常变化的属性,可以封装视图来避免数据回刷;
  • 明细表命名规范:
  • {project_name}.dwd_{业务关键字}_[_{数据单元}]_{单或多业务过程缩写}[_{自定义标签缩写}]_{刷新周期标识}{单分区增量全量标识}


构建汇总事实表-DWS&ADM层

image.png

汇总事实表的设计过程如下:


  • 第一步:确定统计粒度
  • 第二步:定义统计指标
  • 第三步:划分物理表
  • 第四步:冗余维度属性


DWS轻度汇总层面向业务需求设计,首先考虑的是复用性。需要特别关注某些维度的聚集是否经常用于数据分析,并在设计时尽量覆盖常用的分析场景。这样做的好处是,一方面可以为上游提供统一、准确、一致的数据,另一方面,上层指标加工时无需多次计算,可以节省资源。


设计TIPS


  • 避免维度属性一起聚合,数据汇总完成后关联维度获取最新维度属性;
  • 避免所有统计周期/CUBE一起计算,考虑计算复用,如nd依赖1d、粗粒度依赖细粒度;
  • 注意维度用于业务限定或统计粒度的使用方式,使用当天的 vs 最新的:

使用当天的快照数据,则在回刷数据时,数据始终一致;

使用最新的快照数据,则在回刷数据时,数据无法和最初保持一致;


  • 汇总表命名规范:

DWS轻度汇总表:

(1){project_name}.dws_{业务关键字}[_{数据单元}][_{数据粒度缩写}][_{单或多业务过程缩写}][_{自定义标签缩写}]_{后缀};

(2)日汇总通过1d/nd/td等进行区分,其中[1d是1天数据汇总]、[nd是多天数据汇总],[td是历史累计汇总],其他周期用[hs小时汇总]、[ws周汇总]、[ms月汇总]、[rs实时汇总]表示;


ADM应用汇总表:

(1){project_name}.adm_{业务关键字}[_{单元}][_{自定义标签缩写}]_{后缀};

(2)统计时间周期:统一用[ds日统计]、[ws周统计]、[ms月统计]表示,如果能明确界定1d/nd/td,后缀也可写成1d/nd/td;


物理建模设计

逻辑模型设计好后,我们可以开始正式进入代码开发和运维阶段(即正式开始干活):


代码开发:数据业务逻辑处理+SQL SCAN代码规则校验+数据测试(对比、分布)


部署运维:生成ETL任务+运行状态监控+DQC配置


数据模型验证与保障

image.png

社区数据服务

写在前面

我7月初接手了社区业务,这里从我的视角讲述如何针对一块业务进行数据建模以及提供对应的数据服务。对于数据同学来说,我们能做的包括帮助业务看清现状,定位业务问题,以及数据驱动发现产品优化方向与运营策略并定量效果。首先第一步,我们要充分了解业务背景,即市场机会如何,市场现状如何,在我司的定位是什么?以兴趣社区为例,相较于传统的社交方式,目前市场上的趋势是人们更倾向于寻找共同兴趣爱好和认知的伙伴,而针对小众兴趣领域,用户对非标准化商品的交易需求也在增加,比如户外活动和livehouse门票。目前主流的平台只有粗门和闪动,剩下大部分是微信私域在承接(私聊、朋友圈、微信群、小程序等),抖音和小红书等也还在起步阶段。我们的兴趣社区产品是以兴趣为基础,社区为形态,具有分发长尾内容和非标准化商品能力的本地化社区产品。行业内社区的商业模式如下图所示:


image.png

兴趣社区整体的数据服务框架如下图所示:

image.png


数据建模过程

接下来讲述社区数据建设流程,这里只列出了一些关键流程,具体细节在此不展开叙述。

ER关系图

image.png

业务架构图

image.png

构建总线矩阵


640.png


数据分析思路

指标体系

f2803289cc72e5b01194107b4ef820df.png





OSM拆解

1737011108194_F0D5EB66-D45A-4057-A1D4-87A081098640.png

明确和规范定义指标与维度

原子指标

1737011124685_321462A4-40F8-49ed-8F37-123E42B8287E.png

派生指标

1737011142415_253F983C-007E-4a69-B62B-626CB8B1B135.png

1737011200352_920F3B51-008F-42ce-BA53-AC9172E8886F.png

1737011213763_F709055B-2501-4f22-9FA2-D7636E1A78FC.png

1737011236652_368CA906-46FA-4ffb-8161-9E03C3EFB293.png

1737011252343_45D7F566-702C-4672-98A1-0527E9494133.png

1737011269412_93B04124-D902-4f24-8C9E-221890396A71.png

1737011283249_403079E8-DDAC-4ac5-9A7A-87BA112712DE.png

维表设计

1737011308294_91EE357C-0D66-4062-A707-07AD1F1E83C8.png




来源  |  阿里云开发者公众号

作者  |  向鹿



相关文章
|
程序员 数据库 开发者
值得收藏!如何快速画出一幅漂亮的架构图
这篇文章总结了常用的架构图类型,可以借鉴笔者提供的模板,快速地产出符合业务需要的架构图。
162429 95
|
7月前
|
人工智能 供应链 安全
MCP Server的五种主流架构与Nacos的选择
本文深入探讨了Model Context Protocol (MCP) 在企业级环境中的部署与管理挑战,详细解析了五种主流MCP架构模式(直连远程、代理连接远程、直连本地、本地代理连接本地、混合模式)的优缺点及适用场景,并结合Nacos服务治理框架,提供了实用的企业级MCP部署指南。通过Nacos MCP Router,实现MCP服务的统一管理和智能路由,助力金融、互联网、制造等行业根据数据安全、性能需求和扩展性要求选择合适架构。文章还展望了MCP在企业落地的关键方向,包括中心化注册、软件供应链控制和安全访问等完整解决方案。
3139 158
MCP Server的五种主流架构与Nacos的选择
|
11月前
|
测试技术 双11 开发者
一文分析架构思维之建模思维
软件里的要素不是凭空出现的,都是源于实际的业务。本文从软件设计本源到建模案例系统的介绍了作者对于建模的思维和思考。
|
7月前
|
数据采集 人工智能 自然语言处理
打通模型与现实世界的最后一公里?MCP极速入门指南
本文重点讲述如何快速实战上手MCP。
1034 94
打通模型与现实世界的最后一公里?MCP极速入门指南
|
8月前
|
消息中间件 人工智能 API
100行代码讲透MCP原理
本文通过100行代码看到MCP的核心原理并不复杂,但它的设计巧妙深入理解使我们能够超越简单的SDK使用,创建更强大、更灵活的AI应用集成方案。
1515 62
100行代码讲透MCP原理
|
7月前
|
人工智能 Java API
MCP客户端调用看这一篇就够了(Java版)
本文详细介绍了MCP(Model Context Protocol)客户端的开发方法,包括在没有MCP时的痛点、MCP的作用以及如何通过Spring-AI框架和原生SDK调用MCP服务。文章首先分析了MCP协议的必要性,接着分别讲解了Spring-AI框架和自研SDK的使用方式,涵盖配置LLM接口、工具注入、动态封装工具等步骤,并提供了代码示例。此外,还记录了开发过程中遇到的问题及解决办法,如版本冲突、服务连接超时等。最后,文章探讨了框架与原生SDK的选择,认为框架适合快速构建应用,而原生SDK更适合平台级开发,强调了两者结合使用的价值。
9650 33
MCP客户端调用看这一篇就够了(Java版)
|
11月前
|
存储 人工智能 物联网
人人都是设计师,挑战0代码打造专属氛围感风格海报!
无需编程和设计基础,借助阿里云PAI ArtLab,轻松实现任意风格的海报设计。通过在线服务PAI-EAS和对象存储OSS,用户可以快速部署ComfyUI环境,上传线稿后一键生成企业风格海报。提供详细的操作步骤和多种风格示例,如岩石废土风、节日圣诞风和假日海洋风,帮助你轻松上手,快速出图。
362 15
|
11月前
|
机器学习/深度学习 人工智能 算法
人工智能的三大主义--——行为主义(actionism),连接主义 (connectionism)
这段内容涵盖了人工智能领域的重要概念和历史节点。首先介绍了布鲁克斯的六足行走机器人及Spot机器狗,被视为新一代“控制论动物”。接着解释了感知机作为最简单的人工神经网络,通过特征向量进行二分类。1974年,沃伯斯提出误差反向传播(BP)算法,利用梯度调整权重以优化模型。最后,阐述了符号主义、连接主义和行为主义三大学派的发展与融合,强调它们在持续学习中共同推动人工智能的进步。
人工智能的三大主义--——行为主义(actionism),连接主义 (connectionism)
|
8月前
|
存储 人工智能 开发框架
MCP 实践:基于 MCP 架构实现知识库答疑系统
文章探讨了AI Agent的发展趋势,并通过一个实际案例展示了如何基于MCP(Model Context Protocol)开发一个支持私有知识库的问答系统。
MCP 实践:基于 MCP 架构实现知识库答疑系统