1.5 Kylin 中的几核心概念
1.5.1 维度和度量
参考: 1.2
1.5.2 事实表和维度表
事实表(Fact Table)
事实表(Fact Table)是指存储有事实记录的表,如系统日志、销售记录等;
事实表的记录在不断地动态增长,所以它的体积通常远大于其他表。
维度表(Dimension Table)
维度表(Dimension Table)或维表,有时也称查找表(Lookup Table)
是与事实表相对应的一种表: 它保存了维度的属性值,可以跟事实表做关联;相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。
常见的维度表有:日期表(存储与日期对应的周、月、季度等的属 性)、地点表(包含国家、省/州、城市等属性)等。
使用维度表有诸多好处,具体如下:
- 缩小了事实表的大小
- 便于维度的管理和维护,增加、删除和修改维度的属性,不必对事实表的大量记录进行改动
- 维度表可以为多个事实表重用,以减少重复工作。
1.5.3 Cube、Cuboid 和 Cube Segment
Cube(或 Data Cube),即数据立方体,是一种常用于数据分析与索引的技术;它可以对原始数据建立多维度索引。通过 Cube 对数据进行分析, 可以大大加快数据的查询效率。
Cuboid 在 Kylin 中特指在某一种维度组合下所计算的数据。
Cube Segment 是指针对源数据中的某一个片段,计算出来的 Cube 数据。通常数据仓库中的数据数量会随着时间的增长而增长,而 Cube Segment 也是按时间顺序来构建的。
1.5.4 星型模型
数据挖掘有几种常见的多维数据模型,如星形模型(Star Schema)、雪花模型(Snowflake Schema) 等。
星型模型
星形模型中有一张事实表,以及零个或多个维度表;
事实表与维度表通过主键外键相关联,
雪花模型
如果将星形模型中某些维度的表再做规范,抽取成更细的维度表,然后让维度表之间也进行关联,那么这种模型称为雪花模型。
不过,
Kylin只支持星形模型的数据集 ,这是基于以下考虑:
星形模型是最简单,也是最常用的模型。
由于星形模型只有一张大表,因此它相比于其他模型更适合于大数据处理。
其他模型可以通过一定的转换,变为星形模型。
1.5.5 维度的基数
维度的基数(Cardinality)指的是该维度在数据集中出现的不同值的个数;
例如“国家”是一个维度,如果有 200 个不同的值,那么此维度的基数就是 200。
通常一个维度的基数会从几十到几万个不等,个别维度如“用户ID”的基数会超过百万甚至千万。基数超过一百万的维度通常被称为超高基数维度(Ultra High Cardinality,UHC),需要引起设计者的注意。