把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

Apache Kylin 权威指南(二):工作原理

  • 2020-04-14
  • 本文字数:1414 字

    阅读完需:约 5 分钟

Apache Kylin权威指南(二):工作原理

编者按:本文节选自华章科技大数据技术丛书 《Apache Kylin 权威指南(第 2 版)》一书中的部分章节。

Apache Kylin 的工作原理

Apache Kylin 的工作原理本质上是 MOLAP(Multidimensional Online Analytical Processing) Cube,也就是多维立方体分析。这是数据分析中相当经典的理论,在关系型数据库年代就有广泛应用,下面对其做简要介绍。

维度和度量简介

在说明 MOLAP Cube 之前,需要先介绍一下维度(dimension)和度量(measure)这两个概念。


简单来讲,维度就是观察数据的角度。比如电商的销售数据,可以从时间的维度来观察(如图 1 的左图所示),也可以进一步细化从时间和地区的维度来观察(如图 1 的右图所示)。维度一般是一组离散的值,比如时间维度上的每一个独立的日期,或者商品维度上的每一件独立的商品。因此,统计时可以把维度值相同的记录聚合起来,应用聚合函数做累加、平均、去重复计数等聚合计算。



图 1 维度和度量


度量就是被聚合的统计值,也是聚合运算的结果,它一般是连续值,如图 1 中的销售额,抑或是销售商品的总件数。通过比较和测算度量,分析师可以对数据进行评估,比如今年的销售额相比去年有多大的增长、增长的速度是否达到预期、不同商品类别的增长比例是否合理等。

Cube 和 Cuboid

了解了维度和度量,就可以对数据表或者数据模型上的所有字段进行分类了,它们要么是维度,要么是度量(可以被聚合)。于是就有了根据维度、度量做预计算的 Cube 理论。


给定一个数据模型,我们可以对其上所有维度进行组合。对于 N 个维度来说,所有组合的可能性有 2N 种。对每一种维度的组合,将度量做聚合运算,运算的结果保存为一个物化视图,称为 Cuboid。将所有维度组合的 Cuboid 作为一个整体,被称为 Cube。所以简单来说,一个 Cube 就是许多按维度聚合的物化视图的集合。


举一个具体的例子。假定有一个电商的销售数据集,其中维度有时间(Time)、商品(Item)、地点(Location)和供应商(Supplier),度量有销售额(GMV)。那么,所有维度的组合就有 24=16 种(如图 2 所示),比如一维度(1D)的组合有[Time][Item][Location][Supplier]四种;二维度(2D)的组合有[Time, Item][Time, Location][Time、Supplier][Item, Location][Item, Supplier][Location, Supplier]六种;三维度(3D)的组合也有四种;最后,零维度(0D)和四维度(4D)的组合各有一种,共计 16 种组合。


计算 Cuboid,就是按维度来聚合销售额(GMV)。如果用 SQL 来表达计算 Cuboid [Time, Location],那就是:


select Time, Location, Sum(GMV) as GMV from Sales group by Time, Location
复制代码



图 2 四维 Cube


将计算的结果保存为物化视图,所有 Cuboid 物化视图的总称就是 Cube 了。

工作原理

Apache Kylin 的工作原理就是对数据模型做 Cube 预计算,并利用计算的结果加速查询。过程如下:


(1)指定数据模型,定义维度和度量。


(2)预计算 Cube,计算所有 Cuboid 并将其保存为物化视图。


(3)执行查询时,读取 Cuboid,进行加工运算产生查询结果。


由于 Kylin 的查询过程不会扫描原始记录,而是通过预计算预先完成表的关联、聚合等复杂运算,并利用预计算的结果来执行查询,因此其速度相比非预计算的查询技术一般要快一个到两个数量级。并且在超大数据集上其优势更明显。当数据集达到千亿乃至万亿级别时,Kylin 的速度甚至可以超越其他非预计算技术 1000 倍以上。


图书简介https://item.jd.com/12566389.html



相关阅读


Apache Kylin权威指南(一):背景历史和使命


2020-04-14 10:001586

评论

发布
暂无评论
发现更多内容

荣耀智慧服务百亿曝光扶持计划,具体申请规范来了!

荣耀开发者服务平台

卡片服务 荣耀 honor

阿里云基于全新 RocketMQ 5.0 内核的落地实践

阿里巴巴云原生

阿里云 RocketMQ 云原生

[译]为什么程序员不应该长期留在一家公司

宇宙之一粟

成长 跳槽 8月月更

数字货币永续合约交易所app系统开发

开发微hkkf5566

【操作系统 | Linux】终端切换与帮助命令

计算机魔术师

8月月更

严禁外传,字节跳动2022秋招Java岗位架构师面试题(暂定版)发布

钟奕礼

Java 编程 程序员 后端 java面试

软件测试 | 测试开发 | Monkey基本参数介绍

测吧(北京)科技有限公司

软件测试、

共识算法入门

神奇视野

【Django | 安全防护】CSRF跨站伪请求和SQL注入攻击

计算机魔术师

8月月更

提质增效两不误,揭秘大型软件团队「价值增长飞轮」|直播回顾

万事ONES

深度干货!一篇Paper带您读懂HTAP | StoneDB学术分享会第①期

StoneDB

MySQL HTAP StoneDB 企业号九月金秋榜 实时数据库

如何让你的代码更优雅?

六月的雨在InfoQ

性能 代码优化 优雅 日常开发 8月月更

MobTech 短信验证iOS端SDK API

MobTech袤博科技

ios sdk

【Django | 安全防护】防止XSS跨站脚本攻击

计算机魔术师

8月月更

华为云咨询携手商业伙伴探索咨询业态升级

宇宙之一粟

数字化转型 8月月更

送你个低代码福利,错过要再等一年

华为云开发者联盟

云计算 福利 低代码 华为云

万节点规模云服务的 SRE 能力建设

阿里巴巴云原生

阿里云 云原生 SRE 可观测

提速 10 倍!深度解读字节跳动新型云原生 Spark History Server

字节跳动数据平台

数据库 spark 数据存储 湖仓一体 数据计算

测试左移之Sonarqube scanner使用

测吧(北京)科技有限公司

软件测试 SonarQube

【Django | 开发】分离上线环境与开发环境(多settings配置)

计算机魔术师

8月月更

【刷题之路 | Java & Python】两数之和(暴力枚举&哈希表)

计算机魔术师

8月月更

解决方案|电力行业应如何应对数字化转型危机

云智慧AIOps社区

安全 监控 解决方案 智能运维AIOps 故障处理

书单来了 | 京东 8.31 图书品类日,这些经典书 & 新书不容错过!

图灵社区

程序员 计算机 图书节

【Django | 开发】中间件配置(记录响应耗时日志)

计算机魔术师

8月月更

为什么很多企业一边大规模裁员,又一边招聘?

C++后台开发

后台开发 裁员 音视频开发 互联网大厂 C++开发

企业钱包数字资产管理工具API开放对接技术

薇電13242772558

数字资产

设计模式的艺术 第二十三章状态设计模式练习(设计一款纸牌游戏软件,该游戏中用户角色具有入门级、熟练级、高手级和骨灰级4种等级。角色等级与积分对应,胜利增加积分,失败扣除积分。入门级有最基本的游戏功能,熟练级增加胜利积分加倍功能,高手级再增加换牌功能)

代廉洁

设计模式的艺术

书单来了 | 京东 8.31 图书品类日,这些经典书 & 新书不容错过!

图灵教育

程序员 计算机 图书节

java远程连接ssh的实现

测吧(北京)科技有限公司

Java、

软件测试 | 测试开发 | 智能音箱语音交互系统简介与测试初探

测吧(北京)科技有限公司

软件测试、

华为终端全面上新,做全场景智慧体验时代的引领者

ToB行业头条

Apache Kylin权威指南(二):工作原理_架构_Apache Kylin核心团队_InfoQ精选文章