点击蓝色“有关SQL”关注我哟

加个“星标”,天天与10000人一起快乐成长

如果有人问起,“L,对于编程,你最后悔的一件事情是什么?”我只能回答:“数据结构”。

故事,要从我最初学编程的动机,开始说起。

踏入编程这个行当,我是从Visual FoxPro 开始的。

上大学那会,本科学农,农学是养花养草的专业,和计算机一点儿关系没有。但学校是有规定,大一大二要通过计算机二级。被教育了12年,别的本事没有,要说证书这事,那是相当热衷。所以早早就把 VFP 学好了,自然考试也轻松通过。

通过也就通过了,也没留下特别的情感。转机出现在大二,那年学统计,其中有各种公式,各种参数,纷繁复杂,作业题不难,但很多推演特别麻烦。那天做完统计学作业,正在图书馆发呆,过了2,4,6级,发现人生有些空虚,接下来还有2年半的时间要挥霍,不禁要焦虑,接下来该做什么,才能证明自己?

人生的苦恼,逃不过三大问题,我是谁,我从哪里来,要到哪里去

眼瞅着瞅着,就瞄到了作业题上去。这些可恶的参数,每次都要手写,一写就是一个长本,跟写舞台剧台词一样。那有没有好一点的方法来求解最终的答案呢?

就跟棒球突然击中村上春树文艺细胞一般,慵懒的午觉,加上一口激爽的冰咖,瞬间蛰醒了已充分回血的大脑。忽然就想到了VFP中的表单,想到了类里面的变量,这些变量不就是参数嘛,表单不就是每次作业题的草稿嘛。至于公式,那就是方法嘛。我把公式,参数,建成类,最终结果就让计算机程序去算。为什么我要用笔去推算呢?

慢慢的思路磨就出来,于是,说干就干,到机房,插上1.44MB的磁盘,一个下午,把指数平滑公式给写好了。接下来的作业,只要输入表单对应参数值,按下计算按钮,结果就出来了。

从此,作业变成了分析需求,编程成了我真正的作业

你们看,我开始编程时,就在解决一些实际问题,将作业计算中的定量模型,抽象出K-V的数据模型,而计算公式则抽象出函数。

现在回首,我依然对广义的数据结构和算法抱着极高的敬畏。同时,我也庆幸,我掌握了解决信息领域的数据结构与算法,即关系型数据库的数据模型

如果说,广义的数据结构,比如链表,平衡树和图等,是一切编程的基础,那么理解RDBMS的“数据结构”,比如范式,星型,雪花型,大宽表等,就是叱咤信息领域的基础。无论你如何努力,都不会精通,却可以解决无数实用的问题,带来极大的心理成就感和满足。

为方便大家直观地感受数据模型,在这儿出道题,比如对比双11,双12等前后价格波动,引起的销量变化。分享下,你会如何涉及表结构,来满足分析的需求。

要做好这类数据分析的建模工作,离不开讨论 Kimball 与 Inmon 的数据模型。两种截然不同的模型,带给项目的便利与挑战,也是大不同。

当然还有诸如 Data Vault 与 Anchor 模型等等

首先从架构说起


上图,是 Inmon 的集线器架构图。数据仓库,并不是 Inmon 理论的交付产品,它只是一个集企业所有关键实体、业务流程数据于一体的存储。面对各个部门自己的分析需求,数据仓库最终还会继续分流出各个业务需要的数据集市,所有单独的业务都从分配到的数据集市中抽取数据。

从这个架构图,很容易看出,数据仓库只是负责收集数据,类似集线器,最终还是要把数据分流出去。

Kimball 的架构就不一样了。如下图所示,他也有一个大的数据仓库,但少了数据集市的概念。

在Kimball的理论模型中,数据集市从来不是正规的交付物,而是ETL过程中自然产生的副产品。即ETL将业务数据集中抽到 Staging 时,会将数据按照实体,业务流程打包成一个ODS层(Operational Data Store),任何单个业务部门,完全可以从ODS中查询数据。功能上类似于 Inmon 的数据集市。

最终数据汇总到数据仓库时,天然就带有企业全局属性。只见树木不见森林的尴尬,就被化解了。好比,面临企业利润的下滑,我们就能从成本,订单量,单价上来做多维度分析,而不再是仅仅盯着订单量一个维度去看。

所以,Kimball 的理论,更多是数据从局部流向整体的策略,最终交付物,数据仓库就像是企业数据流总线,谁要谁取,不必切换多个数据库。

再对比数据模型的落地

曾经有位同事问我,为什么我们的表,设计了很多冗余字段,而不是严格按照三范式设计呢?其实答案就是 Kimball 的维度模型使然。在 Kimball 总线架构图中,我特意用星型模型标注了数据仓库的 schema.

很好看懂,中间一颗星,周围直联其他星星,有且只有一级联系。这就是 Kimball 数据模型的精髓所在。与 Inmon 最大的区别,也就在这里。Inmon 的数据模型都是ER模型,范式用到了极致。

我们来看 Kimball 的星型模型维度建模:


很直观,围绕着SalesOrder(销售订单)业务,假设有三个维度(即影响订单的三个因素,实际上远不止3个,300个都有,互联网甚至还有3000个)Employee, Time, Components,即人,货,时。

人的维度,还包括了人所在的部门,地址和职级;时间维度,算简单的一个,实际应用中,会有多个记账周期,时间略有复杂;货的维度,就是商品,有厂家,地址,厂长和商品本身的属性,大小,颜色等等。

这就是很多入门的同学迷糊的地方,为什么在一个表里,会有很多看似冗余的数据,为什么不按照三范式拆出来呢?这里有个特别重要的原理,那就是空间换时间。

当所有的属性都拿来做维度分析时,为了节省Join的时间,通常把这些维度属性预先计算好。即时查询分析,用GroupBy去随机分组统计数据,假如没有合适的索引,会非常慢。为了提高效率,我们只能把这些组合的统计与聚合,预先计算好,存起来。大部分的 OLAP 引擎,都是基础这个原理,比如SQL Server Cube, Kylin等。

Kimball 给这种数据模型,起了个名字,“星型模型”。作为最终的交付产品,是数据仓库的灵魂。

Kimball 理论也没有放弃数据集市,只不过他将数据集市放在ETL阶段实现了,用的是另外一种模型,叫做“雪花模型”。功能与 Inmon 的数据集市类似,实际上,数据模型也一致,就是标准的ER模型,即三范式结构。


人的维度上,只保留人本身的属性,比如性别,身高,年龄等,其他附属属性,比如地址,部门,职级,都分别存在不同的子表里面。其他两个维度也一样,自留属性与附加属性都分别存储。这样一个坏处,就是Join比较多,而且容易造成性能缓慢。

那么现实中,我们该用哪种理论来设计数据仓库的架构呢,用哪种数据模型来建模呢

现实世界没有银弹,一切取决于所在业务的复杂度。Kimball 理论显然更适合BI套件,但留下冗余数据处理的复杂;Inmon 解决了数据一致性问题,但性能又是老大难的问题。

顺便说下,阿里巴巴的大数据实践,在第三阶段,也采用了 Kimball 数据模型方法论。可见,即便是在互联网应用,数仓的众多模型也是通用的。具体参考这本书《大数据之路-阿里巴巴大数据实践》

--完--

往期精彩:

本号精华合集(二)

如何写好 5000 行的 SQL 代码

如何提高阅读 SQL 源代码的快感

我在面试数据库工程师候选人时,常问的一些题

零基础 SQL 数据库小白,从入门到精通的学习路线与书单

看数据模型界两大长老的神仙打架相关推荐

  1. ios和鸿蒙哪个好,鸿蒙和iOS的两大区别!看过这两大区别,网友惊叹:鸿蒙太强大了...

    哈喽大家下午好!在几个月前,我们就已经听闻了华为正在研发鸿蒙系统,正像它的名字一样,太古鸿蒙,有开天辟地的意思在里面,真可谓是理科生的浪漫了.不过鸿蒙所拥有的并不只是好听浪漫的名字而已,它的强大和iO ...

  2. 娱乐界两大钻石王老五的本质不同(附图)

    中国娱乐界有很多王老五,基本都可以称之为钻石王老五,原因与经济有关,因为市场经济越发达,则娱乐更娱乐,老五更钻石. 其中,最为注目及另类的,当数小哥费玉清与来自北方的狼齐秦.但这两位钻石级王老五却有本 ...

  3. VIP会员也得看广告!两大视频平台回应...

    前段时间,各大视频平台相继宣布停止VIP会员的超前点播服务,网友们都拍手叫好,一致受到大家的好评.但近日,仍有不少视频网站会员表示,交了会员费后,广告仍时不时跳出来.虽然会员可跳过片头长达 1 分钟的 ...

  4. 人类探测到外星人信号了?看天文界十位大咖如何说...

    科学家们普遍表示,快速射电暴其实是一种自然现象,爆发机制虽然还不清楚,但与外星人没什么关系. 我相信不少人的朋友圈都被一篇<外媒炸裂!真是外星人?宇宙深处神秘信号到底要不要回应?>的自媒体 ...

  5. 人类探测到外星人信号了?看天文界十位大咖如何说

    科学家们普遍表示,快速射电暴其实是一种自然现象,爆发机制虽然还不清楚,但与外星人没什么关系. 我相信不少人的朋友圈都被一篇<外媒炸裂!真是外星人?宇宙深处神秘信号到底要不要回应?>的自媒体 ...

  6. 轻薄旗舰投影两大阵营大眼橙X7D Pro和极米Z7X,谁才是真正的高性价比之选?

    最近市面上出来了两款轻薄投影仪,一款是极米Z7X,一款是大眼橙X7D Pro,值得注意的是,两款投影仪发布的时间相差时间并不远可能一周时间都不到,短时间内连续出现两款轻薄旗舰投影仪,那这两款的功能配置 ...

  7. 看中国 | 王强:化解供需错配新零售行业必须回归两大职能

    从线下到线上,从单一渠道到多渠道融合,技术创新驱动着中国商业社会发生巨大变迁.当数字技术与商业零售在中国巨大的消费场景下相遇,科技创新的力量开始对原有的商业及其基础设施进行重塑. 而伴随着线上线下商业 ...

  8. 一文看懂百度云智峰会:发布两大中台、八大方案,落地细节精准到发丝

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 在今年举办的百度云智峰会上,百度智能云迎来全新升级,领导团队首次集体亮相. 进入2020年,新冠疫情给经济生活带来深刻影响,新基建政策又给 ...

  9. 揭秘阿里中台!一文看懂阿里推荐业务的两大利器

    从工程的角度看,搜索和推荐既有差异点,又有共同点.阿里巴巴集团的搜索和推荐系统由同一个部门研发,因此很多工程能力是复用的,如搜索和推荐业务的算分服务引擎都是RS/RTP. 本文介绍阿里巴巴推荐的中台产 ...

  10. 揭秘阿里中台!一文看懂阿里推荐业务的两大利器 | 赠书

    点击▲关注 "中生代技术"   给公众号标星置顶 更多精彩技术内容 第一时间直达 从工程的角度看,搜索和推荐既有差异点,又有共同点.阿里巴巴集团的搜索和推荐系统由同一个部门研发,因 ...

最新文章

  1. JSON数据和Java对象的相互转换
  2. 【机器学习算法-python实现】采样算法的简单实现
  3. java docx文档解析_带有docx4j的Java Word(.docx)文档
  4. 浅说深度学习(1):核心概念
  5. 随想录(锁的来由和使用)
  6. 如何生成指定范围不重复的随机数数组
  7. jQuery中将表格以交替颜色显示
  8. 来来,一起设计一个简单的活动发布系统
  9. [Python3] 023 面向对象 第三弹
  10. x86汇编语言复习笔记
  11. 软件测试的工作内容主要是干什么?
  12. Far planner之 障碍物的图搜索
  13. VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序)
  14. 什么是Principle?能做什么?
  15. Android异步和同步的区别
  16. Dynamic Address Validation Array (DAVA): A Moving Target Defense Protocol for CANBus 论文笔记
  17. 一个简单的wifi热点启动流程追踪
  18. 半夜仍在加班的我,知道了老板跟女友都在跑步。
  19. 基于设备指纹零感验证系统
  20. Qt编写地图综合应用22-动态轨迹

热门文章

  1. UA OPTI512R 傅立叶光学导论1 为什么光学需要傅立叶变换
  2. 科普:不给手游平台源码的公司能不能选?
  3. Java简单代码-用*号拼三角形
  4. PbootCms微信小程序社交电商软件公司官网源码
  5. 计算机自动关机命令,电脑自动关机命令是什么?你都知道吗?
  6. Rockwell AB PLC 控制器EDS 更新下载更新方法
  7. 在 Windows 10 上用超级终端配置 Cisco 3560 Series 交换机并创建 VLAN
  8. 演化博弈论简介(转)
  9. 通过删除注册表破解plsql
  10. HTML文档解析器 NekoHTML