前言

数据应用种的查询大致分为「即席查询 (Ad Hoc)」「定制查询」两种。

之前出现的很多 OLAP 引擎,包括 Hive, Presto, SpqrkSQL 等,都只适用于即席查询的场景。它们的优点是查询灵活,可以根据企业需要的业务场景自定义维度和指标。但是随着数据量和计算复杂度的增长,响应时间不能得到保证。

在很长一段时间内,企业只能对数据仓库中的数据进行提前计算,再将计算好的结果存储在 MySQL 等 RMDBS 中,再提供给用户进行查询。然而,当业务复杂度和数据量逐渐升高后,使用这套方案的开发成本和维护成本都显著上升。

因此,如何对已经固化下来的查询进行压秒级返回一直是企业数据应用中的一个痛点。

一些核心概念

我们先来了解一下数据处理中的一些核心概念。

数据仓库

Data Warehouse 是商业智能(Business Intellegence) 的核心部分。主要是将不同数据源的数据整合到一起,以提供多维数据分析。

OLAP

OLAP,联机分析处理,以多维度的方式分析数据,一般带有主观的查询需求,多应用在数据仓库中。与之对应的是 OLTP,联机事务处理,侧重于业务数据库的增删查改等业务操作。

维度和度量

维度和度量是数据分析中两个常用的概念。

简单的说,维度是观察数据的角度,也是数据聚合的字段;度量是被聚合的统计值,也就是聚合运算的结果,通过对度量的比较和分析,我们就可以对数据做出评估,得出结论。

事实表和维度表

事实表是指存储有事实记录的表,可以是清洗后的记录表,也可以是清洗前的原始表;由于是动态增长的,所以体积通常远大于维度表。

维度表也称为查找表(Lookup Table),是与事实表相对应的一种表;它保存了维度的属性值,可以和事实表做关联;相当于将事实表上经常重复的属性抽取,规范出来用一张表进行管理。维度表的变化通常不会太大。

星形模型

星形模型 (Star Schema) 是数据分析中常用的几种多维数据模型之一。
其特点是只有一张事实表,以及多个维度表事实表维度表通过主外键相关联,维度表之间没有关联,就像许多星星围绕在一颗恒星周围。

雪花模型(SnowFlake Schema)是另一种常用的模型,就是将星形模型中的某些维度表抽取成更细粒度的维度表,然后让维度表之间也进行关联,这种酷似雪花的模型称为雪花模型。

星座模型 是另一种更为复杂的模型,其具有多个事实表,维度表可以在不同事实表之间公用。

一点总结

本篇先行介绍了一些在处理数据时的一些概念,这些概念大都处于数据清理之上,数据分析之下。也就是在构建一个完整的数据仓库时需要考虑的概念。接下来几篇会更详细地梳理这些概念。%