建模的基本原则,在建模的过程中需要加以考虑,避免以后遇到大坑措手不及,而不是简单的为了建模而建模。
1.高内聚&&低耦合
主要从数据业务特性和访问特性两个角度来考虑:
将业务相近或者相关、粒度相同的数据设计为一个逻辑或者物理模型;
将高概率同时访问的数据放一起 ,将低概率同时访问的数据分开存储。
2.核心模型与扩展模型分离
核心模型包括的宇段支持常用的核心业务,扩展模型包括的字段支持个性化或少量应用的需要,不要让扩展模型包括的字段过多的入侵核心模型,破坏核心模型的性能及简洁等。
3.存储成本与计算性能均衡
在很多时候,设计可能清晰,但存储成本很高,或存储成本很小但计算逻辑复杂,性能差,都需要做一个比较,做到均衡,而非执意孤行。
4.公共逻辑下沉及统一
避免重复计算,需将公共逻辑在底层实现并统一口径。
5.幂等性
处理逻辑不变,多次执行结果需保持一致。
6.规范性
相同含义字段需在多表中命名一致,表命名需清晰规范,便于查询及使用。
6.1、表命名规范
ods层:数据引入层
日志类非结构化表:ods_[数据域]_ [自定义内容]_ [刷新频率]
业务库结构化同步表:ods_[数据域]_ [业务库名]_ [表名]_[刷新频率]
dwd层:明细数据层
dwd_[数据域] _[自定义内容] _[粒度] _[刷新频率]
dws层:公共汇总层
dws_{数据域}_[主题域] _[自定义内容] _[粒度] _[刷新频率]
ads层: 数据应用层
ads_{数据域}_ [自定义内容]_ [粒度]_[刷新频率]
6.2、组合标记
组合标记 | 标记含义 |
---|---|
ma | 按月分区全量更新 |
mi | 按月分区增量更新 |
da | 按天分区全量更新 |
di | 按天分区增量更新 |
ha | 按小时分区全量更新 |
hi | 按小时分区增量更新 |