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

是因为第三回的情节比较多,这里我们拆分成稀首读书笔记来记录。上一样节我们姑且了聊什么数据库是安促成存储和查找的,今天就首我们继续来探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)
美学原理 1

行使一个独立的数据仓库,而不是查询OLTP数据库直接解析。是以数量仓库可以依据做客的特性优化查询。上同样篇讨论的积存索引结构,通常都适用于OLTP数据库,但无适用于OLAP系统。接下来我们来探适用于OLAP系统的仓储索引结构。

3.面向列的蕴藏

当第一流的数据仓库中,表底构造通常十分方便。事实表通常有超过一百列,有时设置也几百列。而普通数据仓库的查询才看同一潮4还是5排的询问。

绝大多数底OLTP数据库,存储是劈向行的:一行之中的装有值会连续存放。
可是,当一个OLAP的囤积查询需要少数的列时(每行由100基本上只列成),需要拿数据从磁盘加载到外存中,并分析其,并过滤掉那些不吻合所要条件的排。这会导致许多无必要的询问消耗。

  • 列存储
    面向列存储的思大简短:不要将所有值从一行存储在同,而是将每个列着之拥有值存储在一块。如果每个列都存储在一个独门的公文中,那么查询才需要读取和分析查询中应用的那些列,并且相同的列会更加便于压缩存储,这样便好减少大气的办事。
    美学原理 2

  • 列压缩
    习以为常列被的数目会冒出重,这就是大大适用于压缩策略。可以因列被的数额,使用不同之抽技术。位图编码是数据仓库中的可怜卓有成效之回落技术:
    美学原理 3

  • 列排序

以排存储着,存储行的顺序并无重大。最简单易行的饶是将它仍插入的逐一排序,因为插入入一个新行只代表增加到每个列文件中。但是,选择逻辑顺序,可以带动来几乎碰便宜。
(1)
排序之后的列是有序的,更便利稳定查询数据。(如:按照时间排序,查询有时刻段外发出的多寡)
(2)
它促进压缩列。如果主排序列没有众异的价值,那么在排序之后,它用产生成千上万再度的队。简单的编码压缩后,就好大幅度的暴跌存储开销。

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

4.美学原理集结:物化视图

数据仓库另一个常用的优化措施是:物化视图。如前所述,数据仓库查询普通涉及聚合函数,如SQL中的计数、总和、平均值、最小值或极端要命价值。如果同样的聚集被众多不等之询问利用,那么每次都对准老数据开展拍卖是不行浪费的。为什么未缓存查询中经常使用的有的计数或总数为?

在关系型的数据模型中,它一般被定义为正规(虚拟)视图:一个发明一样的目标,其情是部分询问的结果。虚拟视图只是编制查询的快捷方式。当您于虚拟视图中读取时,SQL引擎将它进行也视图的底色查询,然后处理进展的查询。而物化视图是将实际的询问结果写副磁盘,不需额外的算计过程。但是当脚数据发生变化时,物化视图需要创新,因为它是一个非规范化的数额复制。(类似于触发器的劳作规律)。所以物化视图是勿常用于OLTP数据库,而在数据仓库进行ETL时开展翻新。
美学原理 4

物化视图的功利是:好几查询变得够呛快为他们都给事先计算。
唯独物化视图的弱项是:询问原始数据的灵活性不足。
例如,没有辙计算哪种销售成本过100美元的商品的比例。因此,大多数数据仓库尽量保留尽可能多的原本数据,并且独自以物化视图作为对少数常用查询的性能提升。

小结:

梳理了OLAP与数据仓库的牵连,同时总结了几乎栽在数据仓库种子常用之仓储结构与相应之优化措施。接下来,我们上下一致节来看看编码在存储其中的意义。