OLAP基本知识

OLAP和OLTP

OLTPOnLine Transaction Processing ,联机事务处理),如MySQL, MicroSoft SQL Server等关系数据库系统,这些关系数据库系统擅长事务处理,在数据操作中保持着很强的一致性和原子性,能够很好的支持频繁的数据插入和修改,但是,一旦需要进行计算的数据量过大,达到数千万甚至数十亿条,或需要进行的计算非常复杂的情况下,OLTP类数据库系统便力不从心了。

这个时候,我们便需要OLAPOn-Line Analytical Processing,联机分析处理)系统,来进行处理。从广义上,OLAP系统是针对OLTP系统而言的,暨不特别关心对数据进行输入、修改等事务性处理,而是关心对已有的大量数据进行多维度的、复杂的分析的一类数据系统。

数据仓库

英文名称为Data Warehouse,可简写为DW或DWH。

是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。

简单的理解就是把OLTP的数据抽取出来,按照主题分类,存到数据仓库里,然后通过OLAP进行分析。
所以数据仓库的数据一般都很大很大,因为包含了很多的历史数据

当然更深的理论我还要继续去学习。
等我学到了再来补充这个。

实时数据仓库

我去实习的组有个业务是实时数据仓库。
说实话一开始我是懵逼的,因为我看到的概念里,数据仓库的查询一般是很慢的,但是现在加上实时两个字是啥意思。
后来我去百度了一下,发现还真有这个概念。

实时数仓的实时主要体现在两个方面

  • 实时插入:数据除了可以通过离线Batch的行为导入仓库,还可以像Mysql那样进行实时的插入。
  • 查询快速:运用Mpp等大规模的分布式的查询引擎,可以在秒级或者毫秒级返回结果。

Ad-hoc

Ad-hoc是数据仓库领域的专业术语。
表示没有预先计划或者按很低的计划或不可预期的事件。

即席查询与通常查询从SQL语句上来说,并没有本质的差别。
它们之间的差别在于,通常的查询在系统设计和实施时是已知的,所有我们可以在系统实施时通过建立索引、分区等技术来优化这些查询,使这些查询的效率很高。
而即席查询是用户在使用时临时生产的,系统无法预先优化这些查询,所以即席查询也是评估数据仓库的一个重要指标

所以Ad-hoc查询对数据仓库的要求很高。

MPP

Mpp:大规模并行处理 (Massively Parallel Processor)
简单的说就是分布式计算。
一般像Presto这种,可以处理PB级别的数据

维度表和事实表

是数据仓库中或者BI中的概念

比如描述人可以有两个维度:姓名和年级。
我们又有这个人的大学表。
这时候我们可以做一个表是姓名 - 年级 - 大学
那么这个表就是事实表,而单独的姓名和年级和大学表都是维度表。

数据库分区

之前只听过分库分表,但是分区真的没听过。
查了一下其实Mysql也是支持分区的。

一般来说分区需要指名一个字段和分区数。
每插入一条数据,根据分区列进行Hash,然后插入指定分区

Mysql的分区大多是指的分文件,几个分区就会被分成几个文件。

但是真正在分布式数据库中的分区就不仅仅是这样了。
相当于一个文件就代表着一个数据节点。
每插入一个数据,根据分区列进行Hash,然后插入指定Node

参考

https://help.aliyun.com/document_detail/26387.html?spm=a2c4g.11186623.6.566.xHxTVZ

(https://help.aliyun.com/document_detail/64020.html?spm=a2c4g.11186623.6.632.S3SGxf)[https://help.aliyun.com/document_detail/64020.html?spm=a2c4g.11186623.6.632.S3SGxf]