概念
介绍
- model design
- 模型设计指的是建立数据表之间的关系,以便从多维数据中快速提取关键信息。模型设计的核心元素包括计算列、维度、度量值和连接关系。
- Index design
- 索引设计指的是在模型中创建索引(CUBEs),以预计算查询结果,从而减少查询响应时间。精心设计的索引不仅可以提高查询性能,还有助于最小化与预计算相关的存储和数据加载成本。
- Data loading
- 数据加载是指将数据导入模型的过程,使查询可以利用预先构建的索引而不是扫描整个数据集。这通过利用模型的优化结构,可以实现更快的查询响应。
Core Concepts
-
维度:查看数据的角度,可以用来描述对象的属性或特征,例如产品类别。
-
度量:通常是一个连续值,例如产品销售额的汇总总和。
-
预计算:基于模型维度组合聚合数据并将结果存储为索引以加速数据查询的过程。
-
索引:也称为 CUBE,用于加速数据查询。索引分为:
- Aggregate Index:多个维度和measures的汇总组合,可用于回答诸如给定年份总销售额等aggregate 查询。
- Table Index: 宽表中的多级索引,可用于回答诸如特定用户最后 100 笔交易等详细查询。
特点:
- 并行计算
- 列式存储
- 预计算
架构设计
整个系统分为在线查询和离线构建两个部分。
离线构建:主要是数据源,构建引擎,存储引擎三大抽象。从数据源拉去数据构建cube,再存储到列式存储引擎中。
在线查询:主要有接口层和查询引擎,对外屏蔽cube等底层概念。
Query Analysis
Kylin 支持标准 SQL 查询。添加数据源表后,查询已下推到 Hive 数据源,可以立即查询数据;但是,目前不建议这样做。立即执行此操作,尤其是当数据量很大或查询很复杂时,可能会导致查询执行时间较长。
创建模型和索引并将数据加载到模型中后,新查询就可以命中模型,并且模型中保存的预先计算的数据将用于响应查询。这种加速查询执行方法可以快 10 倍到 100 倍。
使用Hive作为数据源
Apache Hive 是一种分布式、容错的数据仓库软件,可实现大规模分析。借助 Apache Hive 将结构化数据映射到 Kylin 提供的表和预计算中,可以轻松识别和管理企业最有价值的数据。
构建字典
Kylin通过计算Hive表出现的维度值,创建维度字典,将维度值映射成编码,并保存保存统计信息,节约HBase存储资源。每一种维度组合,称为一个Cuboid。理论上来说,一个N维的Cube,便有2^N种维度组合。
Native 计算引擎
从 5.0 版本开始,Kylin 已将 Gluten-Clickhosue Backend集成为本机计算引擎。并使用 Gluten mergetree 作为内部表的默认存储格式。与 vanilla spark 相比,可以提高 2~4 倍的性能。模型和内部表查询都可以从 Gluten 集成中受益。