从一家餐厅鸟瞰数据仓库工作流

从一家餐厅鸟瞰数据仓库工作流

关于作者:大圣归来,一个有数据信仰的sql工程师,积极进取、喜欢思考,期待与大家一起交流学习~

0x00 前言

数据仓库中很多理论都源于生活,深入研究你会发现不光是数据仓库,包括Kafka数据写入流程、数据结构、MySQL事务一致性等一些技术的核心部分都可以在实际生活中找到他们的影子。今天,我们就从餐厅就餐的场景切入,来探讨数据仓库工作流。

0x01 场景切入-数据采集

首先,让我们来看下面这幅图,图中的快递小哥一大早就送菜到餐厅,很早就要送去,1是为了保证菜新鲜,2是餐厅要早早的准备一系列的前奏工作,包括清洗、分类、加工等操作,请看下图:

640?wx_fmt=jpeg

这就好比数仓中的数据接入层,通常离线场景中会借助Sqoop、DataX、Kettle等工具以JDBC的方式把数据原生不动的从关系型数据库比如MySQL中的数据抽取到数据接入层,数仓中这一层通常称为ODS层,在这一层尽可能的保留数据原貌,不对其进行加工(除非你一眼发现小哥送过来的菜中有坏掉的),以便出现问题时可以溯源。

0x02 场景切入-数据清洗

对上一层有了实际的理解之后,我们开始进入下一环节:洗菜,请看下图:640?wx_fmt=jpeg

在餐厅的后厨中通常有专门负责洗菜的伙计或阿姨,他们负责对菜品进行清洗工作,然后放置在指定区域,这一区域在数仓中叫数据明细层,通常称作DWD层,这一层尽量保证跟ODS层一致的粒度,不对其做多维的聚合操作,也不做过多的过滤工作,只是简单地清洗,为了给后续操作保证数据的质量。

0x03 场景切入-数据集成

完成了以上这两层的工作后,开始进入切菜配菜环节,请看下图:

640?wx_fmt=jpeg

切菜配菜工作由非常熟悉菜品,或者至少熟悉饭店中一个系列的菜品的伙计完成,不然厨师会不满导致返工。数仓中这一层叫数据集市层,一般称作DWS层,完成这一层的开发一样要交由熟悉业务的同学开发,一道菜需要由一份主食材配合些许作料和配菜完成,这个过程其实就是星型建模的过程。

0x04 场景切入-数据存储

上一步骤完成后,紧接着需要把搭配好的菜品分门别类的放置在对应的地方:

640?wx_fmt=jpeg

想要摆放的合理也是一门手艺活,冷热菜分离,调味料单独处理摆放在特殊区域。数仓中就需要对不同应用场景的数据放置于不同存储系统中,有离线有实时,有历史趋势分析,有近三个月的流量转化,不同的需求可能会把数据放入到Redis、HBase、HDFS、MySQL等关系或非关系数据库中。

0x05 场景切入-数据汇总

接下来到了关键的一个步骤:下厨,见图:640?wx_fmt=jpeg

这个步骤的产出,直接关系到客户的满意度,但也是基于面前所有步骤的高质量完成,才能最终交付一道好菜。数仓中这一层就叫应用层,通常称为APP层,直接决定了报表数据的精准,再配合一份漂亮的菜单,nice!

0xFF 总结

让我们再从上至下的串一遍,见下图:

640?wx_fmt=jpeg

我们来构造一个场景:中午客户三五成群走进饭店,首先客户会根据菜单中琳琅满目的菜品选择中意的菜下单,这时饭店服务员把消息传递到后厨,这时对于后厨来说,大部分菜品可以直接下锅甚至直接呈上,因为一早就已经准备好了常规菜,即便有些特殊的需求,通过其他层也能快速获取到。这里还有很多环节部分没有细化,大家先对维度建模的模型分层有个大概的认识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 译者序 审、译者简介 前言 第1章 决策支持系统的发展 1 1.1 演化 1 1.2 直接存取存储设备的产生 2 1.3 个人计算机/第四代编程语言技术 3 1.4 进入抽取程序 3 1.5 蜘蛛网 4 1.6 自然演化体系结构的问题 5 1.6.1 数据缺乏可信性 5 1.6.2 生产率问题 8 1.6.3 从数据到信息 10 1.6.4 方法的变迁 11 1.7 体系结构设计环境 12 1.7.1 体系结构设计环境的层次 13 1.7.2 集成 14 1.8 用户是谁 15 1.9 开发生命周期 15 1.10 硬件利用模式 16 1.11 建立重建工程的舞台 16 1.12 监控数据仓库环境 17 1.13 小结 19 第2章 数据仓库环境 20 2.1 数据仓库的结构 22 2.2 面向主题 23 2.3 第1天到第n天的现象 26 2.4 粒度 28 2.4.1 粒度的一个例子 29 2.4.2 粒度的双重级别 31 2.5 分割问题 34 2.6 样本数据库 34 2.7 数据分割 35 2.8 数据仓库中的数据组织 37 2.9 数据仓库—标准手册 41 2.10 审计和数据仓库 41 2.11 成本合理性 41 2.12 清理仓库数据 42 2.13 报表和体系结构设计环境 42 2.14 机遇性的操作型窗口 43 2.15 小结 44 第3章 设计数据仓库 45 3.1 从操作型数据开始 45 3.2 数据/过程模型和体系结构设计环境 49 3.3 数据仓库和数据模型 50 3.3.1 数据模型 52 3.3.2 中间层数据模型 54 3.3.3 物理数据模型 58 3.4 数据模型和反复开发 59 3.5 规范化/反规范化 60 3.6 数据仓库中的快照 65 3.7 元数据 66 3.8 数据仓库中的管理参照表 66 3.9 数据周期 67 3.10 转换和集成的复杂性 70 3.11 触发数据仓库记录 71 3.11.1 事件 72 3.11.2 快照的构成 72 3.11.3 一些例子 72 3.12 简要记录 73 3.13 管理大量数据 74 3.14 创建多个简要记录 75 3.15 从数据仓库环境到操作型环境 75 3.16 正常处理 75 3.17 数据仓库数据的直接访问 76 3.18 数据仓库数据的间接访问 76 3.18.1 航空公司的佣金计算系统 76 3.18.2 零售个性化系统 78 3.18.3 信用审核 80 3.19 数据仓库数据的间接利用 82 3.20 星型连接 83 3.21 小结 86 第4章 数据仓库中的粒度 87 4.1 粗略估算 87 4.2 粒度划分过程的输入 88 4.3 双重或单一的粒度? 88 4.4 确定粒度的级别 89 4.5 一些反馈循环技巧 90 4.6 粒度的级别—以银行环境为例 90 4.7 小结 95 第5章 数据仓库和技术 96 5.1 管理大量数据 96 5.2 管理多介质 97 5.3 索引/监视数据 97 5.4 多种技术的接口 97 5.5 程序员/设计者对数据存放位置的控制 98 5.6 数据的并行存储/管理 99 5.7 元数据管理 99 5.8 语言接口 99 5.9 数据的高效装入 99 5.10 高效索引的利用 100 5.11 数据压缩 101 5.12 复合键码 101 5.13 变长数据 101 5.14 加锁管理 102 5.15 单独索引处理 102 5.16 快速恢复 102 5.17 其他的技术特征 102 5.18 DBMS类型和数据仓库 102 5.19 改变DBMS技术 104 5.20 多维DBMS和数据仓库 104 5.21 双重粒度级 109 5.22 数据仓库环境中的元数据 109 5.23 上下文和内容 111 5.24 上下文信息的三种类型 111 5.25 捕获和管理上下文信息 113 5.26 刷新数据仓库 113 5.27 小结 114 第6章 分布式数据仓库 116 6.1 引言 116 6.2 局部数据仓库 118 6.3 全局数据仓库 119 6.4 互斥数据 121 6.5 冗余 123 6.6 全局数据存取 124 6.7 分布式环境下其他考虑因素 126 6.8 管理多个开发项目 127 6.9 开发项目的性质 127 6.10 分布式数据仓库 130 6.10.1 在分布的地理位置间协调开发 131 6.10.2 企业数据分布式模型 132 6.10.3 分布式数据仓库中的元数据 134 6.11 在多种层次上建造数据仓库 134 6.12 多个小组建立当前细节级 136 6.12.1 不同层不同需求 138 6.12.2 其他类型的细节数据 140 6.12.3 元数据 142 6.13 公用细节数据采用多种平台 142 6.14 小结 143 第7章 高级管理人员信息系统 和数据仓库 144 7.1 一个简单例子 144 7.2 向下探察分析 146 7.3 支持向下探察处理 147 7.4 作为EIS基础的数据仓库 149 7.5 到哪里取数据 149 7.6 事件映射 152 7.7 细节数据和EIS 153 7.8 在EIS中只保存汇总数据 154 7.9 小结 154 第8章 外部数据/非结构化数据与 数据仓库 155 8.1 数据仓库中的外部数据/非结构化数据 157 8.2 元数据和外部数据 158 8.3 存储外部数据/非结构化数据 159 8.4 外部数据/非结构化数据的不同 组成部分 160 8.5 建模与外部数据/非结构化数据 160 8.6 间接报告 161 8.7 外部数据归档 161 8.8 内部数据与外部数据的比较 161 8.9 小结 162 第9章 迁移到体系结构设计环境 163 9.1 一种迁移方案 163 9.2 反馈循环 167 9.3 策略方面的考虑 168 9.4 方法和迁移 171 9.5 一种数据驱动的开发方法 171 9.6 数据驱动的方法 172 9.7 系统开发生命周期 172 9.8 一个哲学上的考虑 172 9.9 操作型开发/DSS开发 173 9.10 小结 173 第10章 数据仓库的设计复查要目 174 10.1 进行设计复查所涉及的问题 175 10.1.1 谁负责设计复查 175 10.1.2 有哪些议事日程 175 10.1.3 结果 175 10.1.4 复查管理 175 10.1.5 典型的数据仓库设计复查 176 10.2 小结 185 附录 186 技术词汇 215 参考文献 222
本书论述在设计和建造数据仓库中涉及的所有主要问题,论述分析型环境(决策支持系统环境)以及在这种环境中的数据构造。主要内容包括数据仓库的设计与建造步骤,传统系统到数据仓库的迁移,数据仓库的数据粒度、数据分割、元数据管理、外部数据与非结构化数据,分布式数据仓库、高级管理人员信息系统和数据仓库的设计评审等。 本书主要是面向数据仓库的设计、开发和管理人员,以及构造和使用现代信息系统的人员,也适于信息处理方面的高校师生和从事传统数据库系统技术工作的人阅读。 目录 译者序 审、译者简介 前言 第1章 决策支持系统的发展 1 1.1 演化 1 1.2 直接存取存储设备的产生 2 1.3 个人计算机/第四代编程语言技术 3 1.4 进入抽取程序 3 1.5 蜘蛛网 4 1.6 自然演化体系结构的问题 5 1.6.1 数据缺乏可信性 5 1.6.2 生产率问题 8 1.6.3 从数据到信息 10 1.6.4 方法的变迁 11 1.7 体系结构设计环境 12 1.7.1 体系结构设计环境的层次 13 1.7.2 集成 14 1.8 用户是谁 15 1.9 开发生命周期 15 1.10 硬件利用模式 16 1.11 建立重建工程的舞台 16 1.12 监控数据仓库环境 17 1.13 小结 19 第2章 数据仓库环境 20 2.1 数据仓库的结构 22 2.2 面向主题 23 2.3 第1天到第n天的现象 26 2.4 粒度 28 2.4.1 粒度的一个例子 29 2.4.2 粒度的双重级别 31 2.5 分割问题 34 2.6 样本数据库 34 2.7 数据分割 35 2.8 数据仓库中的数据组织 37 2.9 数据仓库—标准手册 41 2.10 审计和数据仓库 41 2.11 成本合理性 41 2.12 清理仓库数据 42 2.13 报表和体系结构设计环境 42 2.14 机遇性的操作型窗口 43 2.15 小结 44 第3章 设计数据仓库 45 3.1 从操作型数据开始 45 3.2 数据/过程模型和体系结构设计环境 49 3.3 数据仓库和数据模型 50 3.3.1 数据模型 52 3.3.2 中间层数据模型 54 3.3.3 物理数据模型 58 3.4 数据模型和反复开发 59 3.5 规范化/反规范化 60 3.6 数据仓库中的快照 65 3.7 元数据 66 3.8 数据仓库中的管理参照表 66 3.9 数据周期 67 3.10 转换和集成的复杂性 70 3.11 触发数据仓库记录 71 3.11.1 事件 72 3.11.2 快照的构成 72 3.11.3 一些例子 72 3.12 简要记录 73 3.13 管理大量数据 74 3.14 创建多个简要记录 75 3.15 从数据仓库环境到操作型环境 75 3.16 正常处理 75 3.17 数据仓库数据的直接访问 76 3.18 数据仓库数据的间接访问 76 3.18.1 航空公司的佣金计算系统 76 3.18.2 零售个性化系统 78 3.18.3 信用审核 80 3.19 数据仓库数据的间接利用 82 3.20 星型连接 83 3.21 小结 86 第4章 数据仓库中的粒度 87 4.1 粗略估算 87 4.2 粒度划分过程的输入 88 4.3 双重或单一的粒度? 88 4.4 确定粒度的级别 89 4.5 一些反馈循环技巧 90 4.6 粒度的级别—以银行环境为例 90 4.7 小结 95 第5章 数据仓库和技术 96 5.1 管理大量数据 96 5.2 管理多介质 97 5.3 索引/监视数据 97 5.4 多种技术的接口 97 5.5 程序员/设计者对数据存放位置的控制 98 5.6 数据的并行存储/管理 99 5.7 元数据管理 99 5.8 语言接口 99 5.9 数据的高效装入 99 5.10 高效索引的利用 100 5.11 数据压缩 101 5.12 复合键码 101 5.13 变长数据 101 5.14 加锁管理 102 5.15 单独索引处理 102 5.16 快速恢复 102 5.17 其他的技术特征 102 5.18 DBMS类型和数据仓库 102 5.19 改变DBMS技术 104 5.20 多维DBMS和数据仓库 104 5.21 双重粒度级 109 5.22 数
目录 译者序 审、译者简介 前言 第1章 决策支持系统的发展 1 1.1 演化 1 1.2 直接存取存储设备的产生 2 1.3 个人计算机/第四代编程语言技术 3 1.4 进入抽取程序 3 1.5 蜘蛛网 4 1.6 自然演化体系结构的问题 5 1.6.1 数据缺乏可信性 5 1.6.2 生产率问题 8 1.6.3 从数据到信息 10 1.6.4 方法的变迁 11 1.7 体系结构设计环境 12 1.7.1 体系结构设计环境的层次 13 1.7.2 集成 14 1.8 用户是谁 15 1.9 开发生命周期 15 1.10 硬件利用模式 16 1.11 建立重建工程的舞台 16 1.12 监控数据仓库环境 17 1.13 小结 19 第2章 数据仓库环境 20 2.1 数据仓库的结构 22 2.2 面向主题 23 2.3 第1天到第n天的现象 26 2.4 粒度 28 2.4.1 粒度的一个例子 29 2.4.2 粒度的双重级别 31 2.5 分割问题 34 2.6 样本数据库 34 2.7 数据分割 35 2.8 数据仓库中的数据组织 37 2.9 数据仓库—标准手册 41 2.10 审计和数据仓库 41 2.11 成本合理性 41 2.12 清理仓库数据 42 2.13 报表和体系结构设计环境 42 2.14 机遇性的操作型窗口 43 2.15 小结 44 第3章 设计数据仓库 45 3.1 从操作型数据开始 45 3.2 数据/过程模型和体系结构设计环境 49 3.3 数据仓库和数据模型 50 3.3.1 数据模型 52 3.3.2 中间层数据模型 54 3.3.3 物理数据模型 58 3.4 数据模型和反复开发 59 3.5 规范化/反规范化 60 3.6 数据仓库中的快照 65 3.7 元数据 66 3.8 数据仓库中的管理参照表 66 3.9 数据周期 67 3.10 转换和集成的复杂性 70 3.11 触发数据仓库记录 71 3.11.1 事件 72 3.11.2 快照的构成 72 3.11.3 一些例子 72 3.12 简要记录 73 3.13 管理大量数据 74 3.14 创建多个简要记录 75 3.15 从数据仓库环境到操作型环境 75 3.16 正常处理 75 3.17 数据仓库数据的直接访问 76 3.18 数据仓库数据的间接访问 76 3.18.1 航空公司的佣金计算系统 76 3.18.2 零售个性化系统 78 3.18.3 信用审核 80 3.19 数据仓库数据的间接利用 82 3.20 星型连接 83 3.21 小结 86 第4章 数据仓库中的粒度 87 4.1 粗略估算 87 4.2 粒度划分过程的输入 88 4.3 双重或单一的粒度? 88 4.4 确定粒度的级别 89 4.5 一些反馈循环技巧 90 4.6 粒度的级别—以银行环境为例 90 4.7 小结 95 第5章 数据仓库和技术 96 5.1 管理大量数据 96 5.2 管理多介质 97 5.3 索引/监视数据 97 5.4 多种技术的接口 97 5.5 程序员/设计者对数据存放位置的控制 98 5.6 数据的并行存储/管理 99 5.7 元数据管理 99 5.8 语言接口 99 5.9 数据的高效装入 99 5.10 高效索引的利用 100 5.11 数据压缩 101 5.12 复合键码 101 5.13 变长数据 101 5.14 加锁管理 102 5.15 单独索引处理 102 5.16 快速恢复 102 5.17 其他的技术特征 102 5.18 DBMS类型和数据仓库 102 5.19 改变DBMS技术 104 5.20 多维DBMS和数据仓库 104 5.21 双重粒度级 109 5.22 数据仓库环境中的元数据 109 5.23 上下文和内容 111 5.24 上下文信息的三种类型 111 5.25 捕获和管理上下文信息 113 5.26 刷新数据仓库 113 5.27 小结 114 第6章 分布式数据仓库 116 6.1 引言 116 6.2 局部数据仓库 118 6.3 全局数据仓库 119 6.4 互斥数据 121 6.5 冗余 123 6.6 全局数据存取 124 6.7 分布式环境下其他考虑因素 126 6.8 管理多个开发项目 127 6.9 开发项目的性质 127 6.10 分布式数据仓库 130 6.10.1 在分布的地理位置间协调开发 131 6.10.2 企业数据分布式模型 132 6.10.3 分布式数据仓库中的元数据 134 6.11 在多种层次上建造数据仓库 134 6.12 多个小组建立当前细节级 136 6.12.1 不同层不同需求 138 6.12.2 其他类型的细节数据 140 6.12.3 元数据 142 6.13 公用细节数据采用多种平台 142 6.14 小结 143 第7章 高级管理人员信息系统 和数据仓库 144 7.1 一个简单例子 144 7.2 向下探察分析 146 7.3 支持向下探察处理 147 7.4 作为EIS基础的数据仓库 149 7.5 到哪里取数据 149 7.6 事件映射 152 7.7 细节数据和EIS 153 7.8 在EIS中只保存汇总数据 154 7.9 小结 154 第8章 外部数据/非结构化数据与 数据仓库 155 8.1 数据仓库中的外部数据/非结构化数据 157 8.2 元数据和外部数据 158 8.3 存储外部数据/非结构化数据 159 8.4 外部数据/非结构化数据的不同 组成部分 160 8.5 建模与外部数据/非结构化数据 160 8.6 间接报告 161 8.7 外部数据归档 161 8.8 内部数据与外部数据的比较 161 8.9 小结 162 第9章 迁移到体系结构设计环境 163 9.1 一种迁移方案 163 9.2 反馈循环 167 9.3 策略方面的考虑 168 9.4 方法和迁移 171 9.5 一种数据驱动的开发方法 171 9.6 数据驱动的方法 172 9.7 系统开发生命周期 172 9.8 一个哲学上的考虑 172 9.9 操作型开发/DSS开发 173 9.10 小结 173 第10章 数据仓库的设计复查要目 174 10.1 进行设计复查所涉及的问题 175 10.1.1 谁负责设计复查 175 10.1.2 有哪些议事日程 175 10.1.3 结果 175 10.1.4 复查管理 175 10.1.5 典型的数据仓库设计复查 176 10.2 小结 185 附录 186 技术词汇 215 参考文献 222
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值