【互联网大厂】数据仓库层级建模设计规范
在滴滴实习了将近半年的时间,现整理实习期间从事大数据研发工作的心得体会
·
国科大学习生活(期末复习资料、课程大作业解析、大厂实习经验心得等): 文章专栏(点击跳转)
大数据开发学习文档(分布式文件系统的实现,大数据生态圈学习文档等): 文章专栏(点击跳转)
【互联网大厂】数据仓库层级建模设计规范
1、数据仓库分层定义
- ODS(Operational Data Store):用于存储来自各数据源和操作系统的原始数据;注意此处数据不做任何处理,为的是保证数据的完整性,以防止数据清洗操作会过滤掉一些重要的业务逻辑。
- DWI(Data Warehouse Interface) : 用于存储清洗转化后的数据,同一业务过程有且仅有一张DWI,且只存在业务事实,不加工逻辑不加入维度属性。
- DIM( Dimension):构建一致性维度表—–将维度作为属性退化到事实表中,减少事实表与维度表的关联。
- DWM(Data Warehouse Measure):同一指标只存储最小粒度,保证指标唯一性与一致性;存储预先计算的汇总数据表----构建公共粒度的汇总指标事实表,以宽表化手段来物理化模型,提高查询性能和响应时间;减少对明细数据的大量访问。
- DM(Data Mart):与DWM边界清晰。;面向业务需求整合多个数据域数据,建立业务需求分析宽表,用于满足业务查询、OLAP等需要。
- APP(Application):面向业务方,该层级包含用户接口、报表、数据可视化工具等,用于决策或理解数据等。
其中:源数据层(ODS)— 中间层(DWI、DWM、DIM)— 应用层(DM、APP)
1.1、建模基本规则
前言:数仓建模时需要遵守的的规则老多了,此处只整理相对重要或易错的一些规则。
- 高内聚低耦合:逻辑关系紧密的功能需要彼此关联紧密;逻辑关系相对独立的功能应尽可能减少彼此之间的直接依赖,而是通过接口来相互通讯,减低之间的耦合度。
- 核心模型与扩展模型分离:不能让扩展字段过度侵入核心模型,以免破坏了核心模型的及时性、简洁性和可维护性。粒度相同的数据设计为一个逻辑或者物理模型;将高概率一起访问的数据放在一起,将低概率一起访问的数据分开存储。
- 公共处理逻辑下沉及单一:其实就是避免数据存在多套口径(计算逻辑及取数方式),将公共的处理逻辑(数据操作)尽量建设在数仓的下层,这样上层在使用的时候就不需要重复计算处理了。
- 成本与性能平衡:适当的数据冗余可以换取查询等操作性能,不宜过度冗余。
- 数据可回滚:处理逻辑不变,在不同时间多次运行数据的结果确定不变。(确定性)
- 一致性以及命名清晰可理解:名称一致性、含义一致性以及表格和字段命名要有较高的可读性,要求易懂、一致、简洁。
2、数仓层级关系图
2.1数仓层级建设心得体会:
- ODS层:通常由前后端埋点、后端日志采集而来,不做任何数据预处理,可通过同步、join、过滤等操作产出DWI(数据接口表)以及DMI(数据维度表)。
- DWI层:一个业务过程只能有一张DWI表;可通过DWI表进行指标计算来产出DWM(数据指标定义层),注意此产出过程不允许跨数据域。
- 业务过程:指企业的业务活动事件,如下单、支付、退款等都是业务过程。此处注意业务过程是一个不可拆分的行为事件。
- 数据域:企业对业务过程的抽象、提炼、组合的集合,通常是根据业务类别、数据来源、数据用途等多个维度,对企业的业务数据进行的区域划分,将同类的数据存放在一起(高内聚低耦合原则)例如电商行业的交易域、营销活动域、用户域、商家域等。
- DIM层:维度表,通常字段数较少且数据量较小,由ODS表得到,使用时通过关联条件关联使用。
- DWM层:下游只能是DIM表、DWI表或其它DWM表,不允许直接从ODS表开始加工;注意DWM表通常存放同一数据域的数据。
- DM层: 主要来自于DWM表,通过业务过程拼接、聚合、过滤得到DM表,此过程通常会关联DIM维度表以及其他数据域下的DWM表。
- APP层:由DM表同步、派生以及DWM表同步、衍生、派生指标。APP表通常有较强的业务特殊性,适用性较低,应尽量减少建设类似表格,转而将精力放在数仓中间层的建设上。
15点22分 2024年8月26日
新学期开始,近期任务是将在滴滴实习期间的收获心得整理下来。
不积跬步无以至千里!
如有错误,欢迎评论区批评指正。
更多推荐
已为社区贡献2条内容
所有评论(0)