#数据仓库设计规范文档
版本 | 更新内容 | 备注 |
---|---|---|
v1.0 | 创建文档 | 2020-08-11 |
v1.1 | 新增词根相关 | 2020-08-31 |
一. 数仓建设
1.1. 数据模型架构规范
分层是为了解决 ETL 任务及工作流的组织、数据的流向、读写权限的控制、不同需求的满足等各类问题。
总体来说,数仓划分为操作数据层、数据仓库层和数据集市层三部分
数据层次的划分
-
ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持一致。它相当于一个数据准备区,同时又承担着基础数据的记录以及历史变化。
-
DW: 数据仓库层 细分为DWS和DWA。它的主要作用是完成数据加工与整合、建立一致性的维度、构建可复用的面向分析和统计的明细事实表以及汇总公共粒度的指标。
-
维度层: 基于维度建模理念思想,建立整个企业的一致性维度
-
DWS (Data Warehouse Service),明细数据层,以业务过程为建模驱动,基于每个具体业务过程的特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当的冗余,即宽表化处理
-
DWA (Date Warehouse Aggregation),汇总数据层。
-
临时层: 生产明细表和聚合表的时候,不可避免地会产生许多中间结果。所有这些中间结果并不承担对外提供服务的职责——它们对数据仓库的使用者是不可见的。为此单独设计了一个临时层来存放数仓层加工过程中可能产生的各种结果。临时层是在 Hive 上额外开辟的一个数据仓库开发人员专用的库。它承担了数据生产过程中问题数据的跟踪,也是数据存储清理时优先考虑的一块空间
-
-
DM:Data Mart,数据集市层。
1.2. ODS层设计规范
ODS层主要是解决:1)导表的冲突,2)落后的数据仓库中间层建设和日益增长的业务需求之间的矛盾。
- 导表的冲突
由于数据源有各种各样的库,源表表名重复是很正常的情况。因此我们需要给每个表加上主题域前缀,从而避免来自不同主题域的同名表之间的冲突。当同一主题域下出现同名表时,我们辅以额外的表后缀来区分。
落地层解决了统一导表的落地问题,也承担着全局 ETL 中的第一轮 Extract。原则上是使落地层里的数据和业务数据保持一致,这也是为了方便将来数据问题的排查与核对。
- 数仓建设和业务需求之间的矛盾
当时我们的人力完全无法满足众多需求方对数据的需求——数据中间层的建设赶不上飞速奔跑的业务需求。于是,一个折中的方法是让业务方直接使用落地层,自行处理一些不跨主题域的需求。这里有业务方非常熟悉的原始表,他们能非常迅速地获得所需要的数据。这也有利于快速、低成本地进行一些数据方面的探索和尝试。
####ODS层命名规范
-
表命