数据仓库模型建设规范
1. 概述
数据仓库不同于日常的信息系统开发,除了遵循其他系统开发的需求、分析、设计、测试等通常的软件生命周期之外,它还涉及到企业信息数据的集成,大容量数据的阶段处理和分层存储,数据仓库的模式选择等等,因此数据仓库的模型设计异常重要,这也是关系到数据仓库项目成败的关键。
物理模型就像大厦的基础架构,就是通用的业界标准,无论是一座摩天大厦也好,还是茅草房也好,在架构师的眼里,他只是一所建筑,地基—层层建筑—封顶,这样的工序一样也不能少,关系到住户的安全,房屋的建筑质量也必须得以保证,唯一的区别是建筑的材料,地基是采用钢筋水泥还是石头,墙壁采用木质还是钢筋水泥或是砖头;当然材料和建筑细节还是会有区别的,视用户给出的成本而定;还有不可忽视的一点是,数据仓库的数据从几百GB到几十TB不等,即使支撑这些数据的RDBMS无论有多么强大,仍不可避免地要考虑数据库的物理设计。
数据仓库建模的设计目标是模型的稳定性、自适应性和可扩展性。为了做到这一点,必须坚持建模的相对独立性、业界先进性原则。
2. 数聚模型架构
在数聚项目实施过程,我们一般将数据仓库系统的数据划分为如下图所示几个层次。
2.1. 数据架构图
2.2. 架构工作方法规范
表类型 数据类型 加载方抽取方式 转换方式 式 变化类型 新增 修改 加载过程 新增代理键。插入记录 如果须保留历史,新增代理键。插入记录 如果无须保留历史,根据代理键修改记录。 维表 1.有时间戳 2.数据量巨大 3.交易事务表 4.周期数据处 理 增量变化抽取 清洗转换 标识增删改 增量变化加载 新增 事实表 删除 删除 若为逻辑删除,可等同修改,或在抽取时过滤。 若为物理删除,则增量抽取无法判断被删除。 根据流水号删除目标表数据,查找代理键, 然后再加载增量变化数据. 一般来说,事实表数据不物理删除, 如果物理删除,增量抽取方式无法判断出来。 落地TMP区 落地DCI区 修改 维清洗转换 落地DCI区 1.无时间戳 2.数据量小的表 3.代码表 4.主数据表 5.初始数据加载 全量抽取 落地TMP区 清洗转换 获取增量 标识增删改 增量变化添加时间戳 落地DCI区 加载 事实表 维表 表 全量加载 事实表 只适合系统初始化数据加载, 不区分增删改 查找对应代理键,全部加载, 适合数据量小的场合,ETL简单快捷。 新增代理键。插入记录 如果须保留历史,新增代理键。插入记 新增 修改 录 如果无须保留历史,根据代理键修改记录 删除 新增 修改 删除 维表不处理被删除的维度记录。 根据事务流水号,删除目标表。 查找代理键,直接插入目标表。 根据事务流水号,删除目标表. 可以处理物理删除现象。
2.3. 准备层L0
2.3.1. 主要数据结构
临时表:从数据源抽取,直接落地到临时表。临时表总是保存这次抽取的数据,不保留
历史数据。也就是说,如果是全量抽取的话,就是源系统整个表的数据,如果是增量抽取的话,就是自从上次修改后的数据。
接口表:从临时表,经过清洗、转换到达接口表。接口表保存历史数据,也就是说,如
果是全量抽取的话,就是源系统整个表的数据,如果是增量抽取的话。
接口表里面也是源系统整个表的数据。 转换表:为了进行清洗和转换建立的中间辅助表。 2.3.2. 命名规范
临时表:L0_TMP_源系统_具体业务 或 L0_TMP_业务主题_具体业务(对单一源) 举例:L0_TMP_POS_SALESORDER 接口表:L0_DCI_业务主题_具体业务表 举例:L0_DCI_SALES_SALESORDER 转换表:L0_MAP_具体业务表 举例:L0_MAP_SALES
2.3.3. 开发工作
? 开发数据抽取接口,落地TMP区
? 开发数据清洗转换程序,落地DCI区,多源系统进行合并 ? 开发数据装载程序,装载到L1层 2.4. 原子层L1
2.4.1. 主要数据结构
维 度 表:整个数据仓库一致的维度 代 码 表:维度属性,非维度代码等。 原子事实表:根据业务主题,形成原子事实表
汇总事实表:根据分析主题,业务主题形成合并或汇总的事实表。
2.4.2. 命名规范
维 度 表:DW_DIM_维度。
举例:组织维 DW_DIM_ORG 日期维 DW_DIM_DATE.
代 码 表:DW_CODE_代码。
举例:性别 DW_CODE_GENDER
原子事实表:L1_DW_FACT_分析主题_具体分析 汇总事实表:L1_DM_FACT_分析主题_具体分析
2.4.3. 开发工作
? 维护聚集。
? 衍生计算,二次指标计算。
2.5. 应用层L2
2.5.1. 主要数据结构
宽 表: 根据需求,从L1层抽取成宽表,表现形式为固定报表,仪表盘等等。 立 方 体: 根据分析主题,从L1生成OLAP立方体。 视 图: 根据需要,从L1,L0层产生L2层的视图。
前端应用,不仅仅可以利用L2层的数据结构,还可以利用L1层的数据结构。对于源系统,还可以利用L0层的DCI区数据,可以做详单和明细查询。
2.5.2. 命名规范
宽 表: L2_FACT_【应用主题】_【分析主题】_应用。 举例:L2_FACT_FIN_ZCFZB (财务->资产负债表)
立 方 体: 根据分析主题,从L1生成OLAP立方体。
视 图: 根据需要,从L1,L0层产生L2层的视图。如明细单。 举例:L2_VIEW_原L1层表。