还是得自己整理,梳理一遍后,清晰多了
OLAP(Online AnalyticalProcessing)是一种数据处理技术,专门设计用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持。
OLAP是数据仓库对外数据能力的一种重要的输出方式:
OLAP的起源
60年代,关系数据库之父Edgar F. Codd提出了关系模型,促进了联机事务处理OLTP( On-line Transaction Processing)的发展(数据以表格的形式而非文件方式存储)。
1993年,OLAP由被称为“关系数据库之父”的Edgar F. Codd在他的白皮书《Providing OLAP to User-Analysts: An IT Mandate》中首次提出。
他认为OLTP已不能满足终端用户对数据库查询分析的需要,SQL对大型数据库进行的简单查询也不能满足终端用户分析的要求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求。
因此,E.F.Codd提出了多维数据库和多维分析的概念,即OLAP。
他为OLAP产品建立了12条评估规则:
OLAP的发展历史
到现在为止,OLAP技术发展了20多年,正处于群雄逐鹿阶段,不知道未来有没有一统江湖的完美技术出现。
传统OLAP
根据Codd的关于OLAP的十二条准则,OLAP技术有了很大的发展,市场上的各种OLAP产品层出不穷。虽然OLAP的概念是在1993年才提出来的,但是支持OLAP相关产品的发展历史,最早可追溯到1975年:
1989年,SQL语言标准诞生,它可以从关系数据库中提取和处理业务数据。这可能是个转折点。在1980‘s年代,电子表格在OLAP应用中占绝对主导地位;而1990’s年代以后,越来越多的基于数据库的OLAP应用开始出现:
大数据OLAP
大数据方向OLAP相关技术的发展:
OLAP的基本内容
变量(度量)
变量是数据度量的指标,是数据的实际意义,即描述数据“是什么”。比如:人数。
维度
维度是描述与业务主题相关的一组属性,单个属性或属性集合可以构成一个维。比如:学历、民族、性别等都是维度。
维的层次
一个维往往可以具有多个层次,例如时间维度分为年、季度、月和日等层次,地区维可以是国家、地区、省、市等层次。这里的层次表示数据细化程度,对应概念分层。
维的成员
若维是多层次的,则不同的层次的取值构成一个维成员。部分维层次同样可以构成维成员,例如“某年某季度”、“某季某月”等都可以是时间维的成员。
多维数组
多维数组用维和度量的组合表示。一个多维数组可以表示为(维1,维2,……,维n,变量),例如(部门,职系、民族、性别,人数)组成一个多维数组。
数据单元(单元格)
多维数组的取值。当多维数组中每个维都有确定的取值时,就唯一确定一个变量的值。数据单元可以表示为(维1成员,维2成员,……,维N成员,变量的值),例如(人事教育部,技能,回族,男,1人)表示一个数据单元,表示人事教育部职系是技能的回族男性有1人。
事实
事实是不同维度在某一取值下的度量,例如上述人事教育部职系是技能的回族男性有1人就表示在部门、职系、民族、性别四个维度上企业人数的事实度量,并且在为人数事实中包含部门维度人事教育部这一个维度层次,如果将人数事实的所有维度考虑在内,就构成有关人数的多维分析立方体。
OLAP的特点
电子数据表与OLAP相比,不具备OLAP的多维性、层次、维度计算以及结构与视图分离等特点。
快速
终端用户对于系统的快速响应有很高的要求。调查表明如果用户在30秒内得不到回应,就会变得不耐烦。因此OLAP平台用了多种技术提高响应速度,例如专门的数据存储格式、大量的预处理和特殊的硬件设计等,通过减小在线分析处理的动态计算,事先存储OLAP所需粒度的数据等主要手段来获得OLAP响应速度的提高,尽管如此,查询反应慢仍然是OLAP产品中经常被提及的问题。
可分析
用户可以应用OLAP平台分析数据,也可以使用其他外部分析工具,例如电子数据表,这些分析工具基本上都以直观的方式为用户提供了分析功能。
共享
由于人们认为OLAP是只读的,仅需要简单的安全管理,导致目前许多OLAP产品在安全共享方面还存在许多问题。因此当多个用户访问OLAP服务器时,系统就在适当的粒度上加锁。
多维
维是OLAP的核心概念,多维性是OLAP的关键属性,这与数据仓库的多维数据组织正好相互补充。为了使用户能够从多个维度、多个数据粒度查看数据,了解数据蕴含的信息,系统需要提供对数据的多维分析功能,包括切片、旋转和钻取等多种操作
OLAP常见操作
OLAP的多维分析操作包括:钻取(Drill-down)、上卷(Roll-up)、切片(Slice)、切块(Dice)以及旋转(Pivot)、钻过(drill-across)、钻透(drill-through)
立方体的每个单元,存放一个聚合值。
-
钻过(drill-across):钻过操作涉及多个事实表的查询并把结果合并为单个数据集。一个典型的例子就是预测数据与当前数据的结合:通常预测数据与当前数据存在于不同的表中,当用户比较预测销售与当月销售时,需要跨多个事实表查询。
-
钻透(drill-through):钻透使用关系SQL,查询数据立方体的底层,一直到后端的关系表。
OLAP的分类
按建模类型分类
一般来说OLAP根据建模方式可分为MOLAP、ROLAP和HOLAP 3种主流类型,另外还有混合事务/分析处理(HTAP)、网络OLAP(WOLAP),桌面OLAP(DOLAP),移动OLAP(MOLAP)和空间OLAP(SOLAP)。
按处理数据量分类
工作中的实际情况是:几种数据引擎混合用,互相补充。
比如离线处理会先用hive或者sparksql跑出数据,对于数据量比较大的,先做一些汇总,再导入clickhouse等数据库,做自助分析。还有个别数据量大,clickhouse不能很好支持,但又需要临时摸底看数时,就要通过spark sql取数,这个就是数仓开发经常处理的临时提数任务。
按功能分类
OLAP系统核心技术点
参考:
http://olap.com/learn-bi-olap/olap-business-intelligence-history/
https://cn.kyligence.io/blog/olap-core-tech/
https://segmentfault.com/a/1190000040428093
推荐阅读:
Hey!
我是小萝卜算子
欢迎关注:数据仓库践行者
分享是最好的学习,这里记录我对数据仓库的实践的思考和总结
每天学习一点点
知识增加一点点
思考深入一点点
在成为最厉害最厉害最厉害的道路上
很高兴认识你