OLAP同数据仓库——《Designing Data-Intensive Applications》读书笔记4OLAP同数据仓库——《Designing Data-Intensive Applications》读书笔记4

鉴于第三节的内容比较多,这里我们拆分成稀首读书笔记来记录。上亦然回我们姑且了聊什么数据库是怎么落实存储和找的,今天立马篇我们继续来探OLTP与OLAP存储引擎的区分与沟通。

由于第三回的情比较多,这里我们拆分成稀首读书笔记来记录。上等同章节我们聊了聊什么数据库是怎兑现存储和搜索的,今天立刻篇我们后续来探望OLTP与OLAP存储引擎的区别与联系。

1.OLTP与OLAP

一路事务处理过程(On-Line Transaction
Processing)也即是咱们常见称之的OLTP
并分析处理过程(On-Line Analysis
Processing)则叫誉为OLAP

当文中,作者列有了点滴类处理过程的界别,我们来挨家挨户梳理一下:

  • OLTP的使用一般读写于少的数目,处理的笔录数据也较小。而OLAP的运用处理的多寡量级通常是OLTP应用之数十,甚至数百倍增。
  • OLTP的使普通直接面对应用程序,读写延迟容忍度低。而OLAP的下一般作为内部数据解析,作为决策支持,读写延迟的容忍度相对比高。(用OLAP应用一般是怪数量解析的基本,笔者入职狼厂的机构,也主要从事OLAP系统Palo的开工作
  • OLTP的动一般读写的都是行的数码。而OLAP的使用普通处理的都是海量的历史数据。

SQL语言它适用于OLTP类型的查询及OLAP类型查询。但是将双方类型的用混杂与同一个数据库,会大大提升DBA的运维难度,同时数据库也未曾办法因地制宜的又好来规划优化不同的使用。

OLTP系统便解决之是应用程序高可用性和没有顺延的读写请求,往往是业务运行的关键所在。DBA也并无愿意为数分析师在OLTP数据库及运行特殊之剖析查询,因为这些查询普通用扫描数据集的大部,这会损伤并发执行工作的性质。
所以随着海量数据持续加强,越来越多的合作社选择以OLAP应用运行在一个单身的数据库来分析。这个独自的数据库称为数据仓库

1.OLTP与OLAP

协事务处理过程(On-Line Transaction
Processing)也即是我们通常称之的OLTP
手拉手分析处理过程(On-Line Analysis
Processing)则于誉为OLAP

每当文中,作者列有了一定量接近处理过程的别,我们来挨家挨户梳理一下:

  • OLTP的用普通读写于少之数据,处理的记录数据也正如小。而OLAP的下处理的数码量级通常是OLTP应用的数十,甚至数百倍增。
  • OLTP的采用一般直接当应用程序,读写延迟容忍度低。而OLAP的行使普通作为里数据解析,作为决策支持,读写延迟的容忍度相对较高。(故OLAP应用普通是雅数量解析的木本,笔者入职狼厂的单位,也至关重要从OLAP系统Palo的开支工作
  • OLTP的施用普通读写的且是行的数量。而OLAP的行使一般处理的且是海量的历史数据。

SQL语言它适用于OLTP类型的查询以及OLAP类型查询。但是以双方类型的使用混杂与同一个数据库,会大大提升DBA的运维难度,同时数据库也无办法因地制宜的又好来统筹优化不同的运。

OLTP系统便解决的凡应用程序高可用性和没有顺延的读写请求,往往是事情运行的关键所在。DBA也并无愿意让数据分析师在OLTP数据库及运行特殊的剖析查询,因为这些查询普通需要扫描数据集的大部分,这会伤害并发执行工作之性。
所以随着海量数据持续增强,越来越多之商家选择将OLAP应用运行于一个独的数据库来分析。这个独自的数据库称为数据仓库

2.数据仓库

数据仓库,是一个单身的数据库,主要负责分析查询数据,而非会见影响OLTP操作。数据仓库中隐含公司当各种OLTP系统的数据的唯有读副本。数据从OLTP数据库中领取(周期性的进行数量转储或持续不断的更新),将取的多少的构造转为易于分析的组织,然后加载到数据仓库。这样经过叫提取–变换–加载(Extract-Transform-Load)
必威app 1

用一个独立的数据仓库,而非是查询OLTP数据库直接解析。是坐数量仓库可以因看的表征优化查询。上同样篇讨论的积存索引结构,通常都适用于OLTP数据库,但不适用于OLAP系统。接下来我们来探视适用于OLAP系统的蕴藏索引结构。

2.数据仓库

数据仓库,是一个独的数据库,主要担负分析查询数据,而非会见影响OLTP操作。数据仓库中带有公司在各种OLTP系统的数的仅仅读副本。数据从OLTP数据库中取(周期性的拓展多少转储或持续不断的创新),将提的数据的布局转为易于分析的构造,然后加载到数据仓库。这样经过叫提取–变换–加载(Extract-Transform-Load)
必威app 2

使用一个独自的数据仓库,而不是查询OLTP数据库直接解析。是以数量仓库可以依据拜的表征优化查询。上一样首讨论的囤积索引结构,通常还适用于OLTP数据库,但切莫适用于OLAP系统。接下来我们来探望适用于OLAP系统的贮存索引结构。

3.面于列的囤

于一流的数据仓库中,表底布局通常十分方便。事实表通常有超过一百排列,有时设置也几百排。而平凡数据仓库的询问才看同破4要么5排列的询问。

多数底OLTP数据库,存储是面对向行的:一行之中的拥有值会连续存放。
可是,当一个OLAP的仓储查询需要少数之列时(每行由100几近个列成),需要以数据由磁盘加载到内存中,并分析其,并过滤掉那些不吻合所急需条件的排。这会招致许多请勿必要之询问消耗。

  • 列存储
    面向列存储的沉思非常简短:不要用所有值从一行存储在共同,而是以每个列被的有所值存储于一道。如果每个列都存储在一个单独的公文中,那么查询才待读取和剖析查询中利用的那些列,并且相同的列会更加容易压缩存储,这样即便可以减掉大气底行事。
    必威app 3

  • 列压缩
    普普通通列着之多少会面世又,这就是大大适用于压缩策略。可以因列着之数,使用不同的削减技术。位图编码是数据仓库中的非常立竿见影之抽技术:
    必威app 4

  • 列排序

在排存储着,存储行的次第必威app并无重大。最简单易行的尽管是以它仍插入的一一排序,因为插入入一个新行只象征多至每个列文件被。但是,选择逻辑顺序,可以带来几乎碰便宜。
(1)
排序之后的列是有序的,更方便稳定查询数据。(如:按照时间排序,查询有时间段外生的数)
(2)
它促进压缩列。如果主排序列没有过多异的值,那么在排序之后,它用生好多复的行。简单的编码压缩后,就得大幅度的下落存储开销。

瞩目,对每个列进行单独排序是无意思之,因为我们拿不再明亮列着属哪一行。可以新建一个找寻引来指向对应的尽。有序而要求高速,所以排序列的储存通常都是经过上文提及的SSTable格式在内存之中灵活处理。

3.面朝列的囤积

于一流的数据仓库中,表的结构通常十分方便。事实表通常有超过一百排列,有时设置也几百排。而一般数据仓库的查询才看同一涂鸦4要么5排的查询。

多数底OLTP数据库,存储是面对向行的:一行之中的备值会连续存放。
但,当一个OLAP的蕴藏查询需要少数之列时(每行由100大抵只列成),需要拿数据从磁盘加载到外存中,并分析其,并过滤掉那些无抱所欲条件的排列。这会招致多不必要的询问消耗。

  • 列存储
    面向列存储的想想好简短:不要将所有值从一行存储在共同,而是以每个列着之具有值存储在一起。如果每个列都存储在一个单身的文书中,那么查询才需要读取和剖析查询中以的那些列,并且相同的列会更加容易压缩存储,这样就算足以减小大气底干活。
    必威app 5

  • 列压缩
    日常列被之数据会油然而生重,这便大妈适用于压缩策略。可以根据列被之数码,使用不同的减技术。位图编码是数据仓库中之可怜卓有成效的滑坡技术:
    必威app 6

  • 列排序

在排存储着,存储行的相继并无根本。最简易的便是用她以插入的各个排序,因为插入入一个新行只象征增加到每个列文件中。但是,选择逻辑顺序,可以带来来几碰便宜。
(1)
排序之后的列是有序的,更有益于稳定查询数据。(如:按照时间排序,查询有时间段内发生的数码)
(2)
它有助于压缩列。如果主排序列没有过剩不一之价值,那么在排序之后,它用时有发生诸多再的排。简单的编码压缩后,就得极大的大跌存储开销。

在意,对每个列进行独立排序是从来不意义的,因为咱们将不再明亮列被属哪一行。可以新建一个寻引来指向对应之执行。有序而要求高速,所以排序列的贮存通常还是经过上文提及的SSTable格式在内存之中灵活处理。

4.凑合:物化视图

数据仓库另一个常用之优化措施是:物化视图。如前所述,数据仓库查询普通涉及聚合函数,如SQL中之计数、总和、平均值、最小值或极端老价值。如果相同的集结被许多不同的查询利用,那么每次都指向原有数据进行拍卖是杀荒废之。为什么未缓存查询中不时下的局部计数或总数为?

以关系型的数据模型中,它通常给定义也业内(虚拟)视图:一个发明一样的目标,其情是有的询问的结果。虚拟视图只是编辑查询的快捷方式。当你从虚拟视图中读取时,SQL引擎将它进行也视图的根查询,然后处理进行的询问。而物化视图是以实际的询问结果写副磁盘,不欲额外的测算过程。但是当脚数据发生变化时,物化视图需要创新,因为其是一个非规范化的数码复制。(类似于触发器的办事原理)。所以物化视图是无常用于OLTP数据库,而在数据仓库进行ETL时开展翻新。
必威app 7

物化视图的补是:或多或少查询变得够呛急匆匆以他俩就被先行计算。
但是物化视图的短是:询问原始数据的八面玲珑不足。
例如,没有主意计算哪种销售基金过100美元之货物之比重。因此,大多数数据仓库尽量保存尽可能多之故数据,并且独自使用物化视图作为对一些常用查询的属性提升。

4.集聚:物化视图

数据仓库另一个常用的优化措施是:物化视图。如前所述,数据仓库查询普通涉及聚合函数,如SQL中的计数、总和、平均值、最小值或极特别价值。如果同之聚合被广大两样之询问利用,那么每次都针对旧数据开展处理是殊浪费的。为什么不缓存查询中时常应用的部分计数或总数也?

当关系型的数据模型中,它一般被定义也正式(虚拟)视图:一个说明一样的对象,其内容是局部查询的结果。虚拟视图只是编制查询的快捷方式。当您打虚拟视图中读取时,SQL引擎将她进行也视图的底部查询,然后处理进展的查询。而物化视图是用实际的查询结果写副磁盘,不待格外的计算过程。但是当脚数据发生变化时,物化视图需要创新,因为它们是一个非规范化的数额复制。(类似于触发器的劳作规律)。所以物化视图是免常用于OLTP数据库,而当数据仓库进行ETL时展开更新。
必威app 8

物化视图的利是:某些查询变得那个抢以她俩一度让优先计算。
但物化视图的通病是:询问原始数据的油滑不足。
例如,没有章程计算哪种销售成本超100美元的货色之百分比。因此,大多数数据仓库尽量保存尽可能多之老数据,并且仅行使物化视图作为对少数常用查询的性能提升。

小结:

梳理了OLAP与数据仓库的关系,同时总结了几种植在数据仓库种子常用的仓储结构与相应的优化措施。接下来,我们进入下一致章节来探视编码在储存其中的意思。

小结:

梳理了OLAP与数据仓库的联系,同时总结了几乎栽于数据仓库种子常用之储存结构和相应的优化措施。接下来,我们进下同样章节来看望编码在囤其中的意义。

相关文章