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

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

图 | Lenis

互联网两大巨兽,西谷歌,东炎帝!

谷歌我们都知道,全世界有名的搜索引擎公司。那么炎帝,是中国那个老祖宗-炎帝么?

搞笑,当然不是!

炎帝是我硬翻的,英语 6 级,才疏学浅,不够用。原词是 Yandex, 俄罗斯的一家互联网公司。做搜索业务,与谷歌齐名。


认识这家公司,倒不是我要去俄罗斯宣传 SQL. 而是这家公司做了款牛皮到炸天的 OLAP 分析工具 ClickHouse.

ClickHouse = Click Stream + Data Warehouse

这并不是我 YY 的单词组合,炎帝(Yandex) , 就是这么宣传的。

说起 OLAP,容我卖下情怀,插播一段回忆。

2008年时,昕姐(我媳妇儿)和我还在无锡华润,做 SAP/R3 开发。

公司活少,人好,周末活动紧凑,两个人又都是不留钱的主,每月收入 5000 块,悉数花个精光,小日子过得忘乎所以。

也不知道昕姐哪天受了刺激,要求我开发一套家庭用的资产管理 MIS(management of information system).

好歹我也会点 VFP + SQL Server. 封闭式开发了一个周末,这套资产管理系统就出来了。

现在想想,太特么幼稚了。5000块,还资产管理,哈哈。

当时,却觉得蛮好玩。还在昕姐面前涨了面儿。

但,任何 MIS 投入使用,便开启一个大坑。

首先是界面美化。当时,前端没有那么火和骚,一个 FORM(表单)解决问题。调调背景色和线框样式,也就过去了。

最大的问题,来自数据分析。昕姐提出来两个报表:

  • 每日消费统计图,并可以汇总成周/月/年的统计

  • 消费明细统计图,按照时间粒度做分计

这两个要求,让当时的我,触摸到了 OLAP 的边。

你看,一个对象对 SQL BOY 的影响,就是这么大!

一开始,用 vfp 编程, 在表单上划线。折线图非常硬,特别直男的那种。没有一点柔和感,粗细不好调。数据一多,那锯齿画面,看得我一脸紧张。还没昕姐在 excel 上做的好。

于是想着,excel 2007 作图居然这么好看,为什么不能用在 vfp 编程中呢。谷歌了下,发现一个终极难题,vfp9 终结了开发,顶多与 excel 2003 集成。想要使用 excel2007 的 DLL库,必须用 c#.

好嘛,c# 就 c#, 反正经过这么几次折腾,我对 vfp 的前景,也看淡了很多。

于是,买了两本 c# 的书,趁着月黑风高,苦战了几个星期。把表单控件,ado.net 编程也都摸了个遍。彻底把家庭资产管理系统改写了。

终于,报表像样了,图变得润滑了,柱状切饼图,随手也做掉了。我的腰板再一次硬起来了。

原以为可以喘口气了。谁知昕姐,笑盈盈地端来了一碗热鸡汤面,同时还端来了新一轮的需求。

原来她想要的日消费统计图,是把所有的消费记录都拉出来。按照年一行行统计好,排列成柱状图。

如果哪一年消费有些高,可以点着那根柱状图,进去看每个月,进而可以找到哪一天,什么种类的消费高了。

天哪,这个脑洞怎么想出来的,肯定是那帮财务分子教她的!我就说嘛,找媳妇儿不能找财务,哪怕沾点边儿的,那个要求,细过出前一丁。

我一口一口扒着面,一嘴一嘴的讨价还价,最终还是接了这个需求。

于是,又是一通搜索,让我知道了 sql server cube 和 excel pivot chart 这两样宝贝

cube 可以实现下钻和上卷的功能,前提是按照维度和度量(组),预先生成一张大表。然后丢给 cube 服务器去跑数据。

大致的 cube 架构如下图:


excel pivot chart 则是承接 cube 来的数据,完成可视化操作。


如今这样的可视化分析,到处都是,就连PowerBI,也大放异彩!

当把最终的产品给昕姐做展现的时候,虽然没有得到她的极力夸奖,但我内心却异常激动。因为后续的事情,老读者们都知道了。这项新研究,我把它用到公司的MES软件中,彻底改变了我在公司IT部门的地位,也让我拿到了薪水翻3番的新工作

从现在的角度来看,当时做的这些基础的数据仓库和BI工作,是十分初级和粗糙的。但对于大部分的制造业和服务业来说,基本上解决90%的数据统计问题,一点瓶颈都没有。

美中不足的,有以下3个方面:

  • 非实时

  • 维度暴涨

  • 极度呆滞

非实时

这个很好理解。类似 cube 这类预处理机制,本质上是用空间换时间策略。把聚合的处理,放在了数据分析的前道处理工序上。

就如同下面的建模,确定4个维度和1个度量,最后送入 Cube 服务器做处理:


而这个预处理,非常耗时。首先需要确定维度和度量,经过数据建模和ETL,把数据聚拢。预处理后,查询速度极快。

业界称这种处理分析方式为 MOLAP, 即 Multidiemensional OLAP. 它需要一种特殊的数据库服务,就是聚合计算引擎。

除了 sql server cube,还有 Oracle, IBM, MySQL 都提供类似的产品。大数据界也有类似的产品,Hive, SparkSQL, Impala, Kylin 等。这些大数据产品的实现原理,也基本都衍生于  MapReduce.

维度暴涨

前面说到 MOLAP 的本质是预计算,针对特定维度组合,把预计算的统计值,存在数组里。等到分析时,根据维度组合索引,就能快速定位到具体的统计值。

在下面的数据立方体(Cube)中,预先计算了聚合的值。立方体的每条边,都视作一个维度。每个小碎格,代表了维度相交,聚合出来的度量值。立方体代表了3维,如果有更多维,则预处理会更加复杂。

但是分析的时候,我们并不是每次都需要全部的维度。有时候仅需要其中2-3个维度,但是预处理引擎却是要把所有维度的组合,都算进来。

假设有 n 个维度,需要组合计算的种类,就有 2^n 个。比如 10个维度,那么维度组合就有1024种,这会是个巨大无比的集合。

显然,这不仅浪费资源,还容易拖累查询速度。

极度呆滞

在数据被送入 cube 处理之前,需要对表结构做特殊处理。这种处理方式,就是大家经常听到的维度建模。


在 cube 引擎中,流淌的不是一行行数据,而是一个个维度和基于这些维度组合附加的度量。这么说肯定很抽象,什么是维度,什么是度量?听上去和表结构似乎没什么关系,初学者也很难搞清楚。

再举个栗子,就拿篮球运动员奥尼尔来说,年龄,身高,带球速度,就是他的维度;而打过多少场球赛,胜多少场,平多少场,输多少场,就是他的度量。比如20岁,以216公分身高,147公斤体重,抢得篮板球2个,胜3场球赛。这样一条记录,可以为其建模为:


age height  weight  board_score win_time
20  216     147     2           3

这样一来,维度和度量,其实非常明确。年龄,身高,体重是维度,篮板个数,胜负数是度量。

数据被整理成这种格式后,就可以送入 cube 做处理。但,也因为是这样的预整理模式,束缚了 cube 的计算能力。

我们要增加一维,比如教练,就需要重新整理数据表,而 cube 也需要重新做一次全处理,而不是增量处理。全处理,意味着需要把整张表扫描,根据维度组合,生成预聚合。

很显然,这样的预处理,对于维度经常变动的数据,是没有优势的,缺少灵活性。如今的互联网形态,每分钟数据都有新的维度产生,因此cube的处理方式,变得力不从心。

此时, 黑马 Clickhouse 出场了。它带着新型的处理方式,来了。他来了,她终于来了。

它摒弃预处理方式,以实时维度组合,闪电般地计算聚合。增加维度,一维,两维,三维,都不需要做任何延迟计算,在数据表生成的那一刹那,查询既结果。它是真正的 ROLAP. 意味着,不需要多一层像 cube 一样的多维数据库引擎,来加快查询速度。

它解决了传统 cube 的所有缺点。

以上的分享,灵感来自于这本书《ClickHouse原理解析与应用实践》。感谢机械工业出版社华章赵静编辑的赠书。这是国内第一本详细介绍clickhouse的书,作者也是 clickhouse 代码的贡献者,非常值得一看。

迫不及待,我已经在春节期间,开始本次CH之旅。

全书总共分为11章:

第1章 介绍ClickHouse的由来、发展历程、核心特点与核心特点。

第2~6章 介绍了ClickHouse基础使用部分,包括整体架构、如何安装、数据定义、数据引擎、数据查询和函数的特性和使用方法。

第7~9章介绍了ClickHouse高级特性部分,包括数据库管理操作,数据分片、数据副本和高可用的特性和使用方法。

第10~11章介绍了如果自己手动实现ClickHouse中间件的思路和示例,同时也介绍了几款可视化工具与ClickHouse集成的方法。

--完--

往期精彩:

本号精华合集(三)

如何写好 5000 行的 SQL 代码

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

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

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

炸!撩下 OLAP 数据分析的黑马神器 ClickHouse相关推荐

  1. 比MySQL快801倍,OLAP两大神器ClickHouse+Doris技术选型攻略分享

    数字化时代,数据即价值.商战即信息战,如何从海量数据中提取精准的用户群体信息成为众多企业经营的重中之重,这就对开发工程师在速度和精准度方面的要求越来越高. 海量订单如何精准获取地域.时间.来源.渠道等 ...

  2. 比MySQL快801倍,OLAP两大神器ClickHouse和Doris到底怎么选?

    对于匠人而言,一项手艺,如果学不会,结果只有两种:一是低头求人,二是花钱买成品. 对于程序员而言,一款热门软件,如果玩不转,结果也是两种:一是向高手求教,二是看着别人升职加薪. 2021年4月程序员薪 ...

  3. 以互联网行业为背景下的数据分析通识

    在互联网行业中,用户在互联网上的行为"数据"都会被记录.此时,就需要进行"数据分析"并利用技术手段从海量用户行为数据中挖掘出有价值的信息,分析用户的生命周期以及 ...

  4. OLAP黑马利器ClickHouse实战应用

    极简,几乎是所有工具类产品的终极目标. 对于数据库工具而言尤为如此: 应对多样化的数据分析场景,需要简洁.统一的大数据分析体系 数据查询秒级响应,以保证企业管理者和相关业务人员的工作效率 数据报表建设 ...

  5. 大数据分析——暑期黑马《延禧攻略》到底有多火!

    上周的文章一发果然引来了小伙伴们的积极留言,纷纷要求小编做个分析,小编也是为难呀,几经思量,终于选了个<延禧攻略>出来. 纵观今年暑假的爆款剧不再是湖南卫视的什么金鹰独播剧了,虽然有着&l ...

  6. python培训班-Python培训机构_高品质Python线下开发培训班推荐-黑马程序员

    Python编程基础基础班1 课时:15天技术点:97项测验:2次学习方式:线下面授 学习目标 1.掌握Python开发环境基本配置|2.掌握运算符.表达式.流程控制语句.数组等的使用|3.掌握字符串 ...

  7. 提升工作效率,请收下这10个办公神器

    精心安利10个让人惊艳的办公神器. 1.MouseInc MouseInc是一款强大的全局鼠标手势软件.MouseInc非常小巧,压缩后只有200KB左右,真正的轻量又好用,并且开发者承诺永久免费,不 ...

  8. 新媒体运营胡耀文教程:产品运营视阈下的数据分析

    数据分析对于产品运营来说,是一面可以反映业绩情况.检验运营效果的镜子,更是一种工作能力和处事思维.数据分析者的不同职业阶段,也对应着数据分析的不同业务流程. 什么是数据分析? 数据分析是目标,是工具, ...

  9. 线下门店管理运营 线下门店数据分析

    联合利华 x Whale 帷幄|未来数字商店 作为快消巨头之一的联合利华(Unilever),也在积极实现数字化的新零售. 2019 年初,Whale 帷幄第一次带着"未来数字商店" ...

  10. 未明学院:量化金融项目实战,成为FinTech风口下掌握数据分析技能的复合型人才!

    金融科技(FinTech)的风口下,想进入核心岗位找到自己的机会,在这个风口中起飞,却不懂数据和编程?你正在失去机会-- 1. 金融行业中数据和python技能的重要性 金融行业天然要跟数据打交道,它 ...

最新文章

  1. python xpath语法-Python爬虫:Xpath语法笔记
  2. shell中变量的取值与赋值
  3. 北斗导航 | Matlab实现电离层延迟计算:Klobuchar(源代码)
  4. MOS和三极管不同接法对应的性能比较
  5. Servicehot:混合云泄露四大公有云的秘密
  6. 论文盘点:CVPR 2018 Top 20,华人发明的SENet居首!
  7. python代码转换为pytorch_python基础教程Pytorch之Tensor和Numpy之间的转换的实现方法...
  8. Atitit.人力资源管理原理与概论
  9. 沙盘模拟软件_ERP企业经营模拟第一次培训
  10. Java学习从入门到放弃
  11. 关于Pycharm进行pytorch分布式训练代码
  12. payload的使 常用xss_XSS Payload知识备忘
  13. 如何正确利用肢体语言表达自己
  14. 解决创建MAVEN工程速度慢的问题
  15. 大数据环境搭建 —— VMware Workstation 安装详细教程
  16. Windows设置并切换代理服务器
  17. python搜索pdf内容所在页码_使用pyPDF从文档中检索页码
  18. 洛谷 P2191 小Z的情书
  19. 2.3 PPT :用logo设计封面
  20. 记账软件APP用哪个,一看就知道

热门文章

  1. 老鸟分享_云堡垒机、运维堡垒机、运维审计系统、堡垒机能干什么?
  2. 计算机表格怎么加减乘除,怎么在excel表格中计算加减乘除
  3. 欧文分校计算机新sat多少分录取,新SAT多少分能进美国TOP100大学
  4. 怎样用自己电脑搭建网络服务器!不花一分钱
  5. centos7.3根目录空间扩展
  6. 【Unity】UI面板:倒计时器
  7. TreeMap通过值对象属性排序
  8. 【数据分析项目实战】篇1:游戏数据分析——新增、付费和用户行为评估
  9. 美国车联网(V2X)发展现状与反思
  10. 计算机二级C语言选择题——01