阿里妹导读
作为一名数据研发的实践者,我在一年的时间里深入学习了数据建模,并在业务需求中不断磨练。现在,我想与大家分享一些关于数据建模的理解,并以我支持的社区业务为例展开讨论。如果有任何不足之处,欢迎大家交流指正。
何为数据
数据,是对客观事物的数量、属性、位置及其相互关系的抽象表示,是信息的记录。简单来说,凡是可以被记录的,都是数据。数据并非天生存在,而是被生产出来的,从原始数据的采集到数据的加工、分析挖掘,最终形成知识,再循环到指导原始数据的生产。这个过程中,涉及两个关键要素:数据源和数据生产。
DIKW框架:数据的层次与转化
DIKW框架描述了数据从原始形态到智慧的过程,即数据(data)经过处理成为信息(information),再经由知识(knowledge)达到智慧(wisdom)。这不仅是数据的升华过程,也是人类认知世界的逐渐深入。
何为数据建模
数据建模,即构建数据模型。一个完整的数据模型包括数据组件、关系以及规约。其本质是为了有序、有结构地分类存储和数据。
为何需要数据建模
规范:指导用户进行规范化研发,保障数据的规范化和一致性;
效率:使消费用户易于查找、易理解、易使用,并产出稳定、性能优异的数据;
成本:追求存储成本、计算成本以及消耗的合理性,同时保持计算性能的优化。
数据建模的总体流程
概念建模设计
这是数据建模的第一阶段。将业务领域知识转化为图形化表达,以便指导后续的逻辑建模,并方便数据消费者查找和使用数据。在进行概念建模时,需要进行需求调研,包括业务调研和需求分析两方面。接着进行数据域划分,根据业务分析抽象出业务过程或维度,然后划分出单独的模块。
逻辑建模设计
进入逻辑建模设计阶段,首先要明确并规范定义指标与维度。接着进行维度表设计,选择业务对象,定义维度属性,定义关联维度以及冗余维度等。这一阶段还涉及到TIPS设计,如主键标识、水平拆分/垂直拆分等。
明细事实表设计
明细事实表的设计过程包括选择业务过程,确定维度,确定事实等步骤。设计时需遵循稳定性的原则,尽量与原系统保持一致,提供最明细的数据。同时也要考虑脏数据的过滤以及将数据解析成下游可以直接消费的数据。
汇总事实表设计
汇总事实表的设计面向业务需求,首先要确定统计粒度,然后定义统计指标,划分物理表,并考虑复用性。在设计时,要避免维度属性一起聚合,避免所有统计周期/CUBE一起计算等。
物理建模设计
逻辑模型设计好后,正式进入代码开发和运维阶段。这一阶段包括代码开发、部署运维以及数据模型验证与保障等。其中代码开发需关注数据业务逻辑处理、SQL SCAN代码规则校验以及数据测试等环节。
写在前面
我自7月初接手了社区业务的数据建模工作。以下将从我的视角出发,详细讲述如何针对一块业务进行数据建模以及提供对应的数据服务。在数据驱动下,我们可以帮助业务看清现状、定位业务问题,并定量地评估产品优化方向与运营策略的效果。