写点什么

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:001575

评论

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

【2.24-3.3】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

堡垒机有硬件吗?推荐使用硬件堡垒机吗?

行云管家

云计算 网络安全 云服务 堡垒机

解决80%的工作场景?GitHub爆赞的Java高并发与集合框架,太赞了

Java 高并发 JUC JCF

TIDB云数据库试用体验

TiDB 社区干货传送门

安装 & 部署 扩/缩容 6.x 实践

一次不兼容ddl导致的cdc问题

TiDB 社区干货传送门

故障排查/诊断

NFTScan x TiDB丨一栈式 HTAP 数据库为 Web3 数据服务提供毫秒级多维查询

TiDB 社区干货传送门

爱奇艺统一实时计算平台建设

Apache Flink

大数据 flink 实时计算

新兴应用场景层出不穷,电源管理芯片市场前景广阔

华秋电子

云数据库 TiDB 试用体验总结

TiDB 社区干货传送门

版本测评

BSN-DDC基础网络详解(四):资金账户充值

BSN研习社

【图解】白嫖阿里云价值3.3万的TiDB

TiDB 社区干货传送门

实践案例 管理与运维 扩/缩容 6.x 实践

体验ChatGPT后,陷入沉思...

Openlab_cosmoplat

开源 行业趋势 ChatGPT

头一次见!阿里牛人上传的600页JVM垃圾优化笔记飙升GitHub榜首

Java 性能优化 JVM 垃圾回收

面试官:在高并发情况,你是如何解决单用户超领优惠券问题的?

Java redis 高并发

TiDB Operator备份TiDB集群到NFS持久卷

TiDB 社区干货传送门

集群管理 管理与运维 故障排查/诊断 安装 & 部署 备份 & 恢复

TiDB Operator恢复持久卷上的备份文件

TiDB 社区干货传送门

集群管理 管理与运维 故障排查/诊断 安装 & 部署 备份 & 恢复

天下武功唯快不破:TiDB 在线 DDL 性能提升 10 倍

TiDB 社区干货传送门

基于Python+uiautomation的windowsGUI自动化测试概述

Python 自动化测试 unittest WindowsGUI UIaotumaiton

AI开发实践丨客流分析之未佩戴口罩识别

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

等保二级必须要上的设备有哪些?需要堡垒机吗?

行云管家

等保 堡垒机 等保二级

数据库日常实操优质文章分享(含Oracle、MySQL等) | 2023年2月刊

墨天轮

MySQL 数据库 oracle postgresql 性能优化

云数据库 TiDB 体验

TiDB 社区干货传送门

社区活动 6.x 实践

火山引擎DataTester:A/B实验如何实现人群智能化定向?

字节跳动数据平台

大数据 AB testing实战

备战一年半,我们让最火的开源网关上了云

API7.ai 技术团队

api 网关 APISIX SaaS 平台

面试官:JVM是如何分配和回收堆外内存的?

Java JVM 垃圾回收

平安银行与易观千帆签约合作,加速数字用户资产增长

易观分析

金融 银行

云数据库TiDB试用初体验

TiDB 社区干货传送门

6.x 实践

2023年2月中国网约车领域月度观察

易观分析

网约车 出行服务

全局视角看技术-Java多线程演进史

京东科技开发者

jdk 多线程 Thread 企业号 3 月 PK 榜

Tapdata Cloud 基础课:新功能详解之「微信告警」,更及时的告警通知渠道

tapdata

数据库·

喜讯!华秋电子荣获第六届“高新杯”十大优秀企业奖

华秋电子

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