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)

ETL在数据仓库与数据库之间的交互

使用一个单独的数据仓库,而不是查询OLTP数据库直接分析。是因为数据仓库可以根据访问的特点优化查询。上一篇讨论的存储索引结构,通常都适用于OLTP数据库,但不适用于OLAP系统。接下来我们来看看适用于OLAP系统的存储索引结构。

3.面向列的存储

在典型的数据仓库中,表的结构通常非常宽。事实表通常有超过一百列,有时设置为几百列。而通常数据仓库的查询只访问一次4或5列的查询。

大多数的OLTP数据库,存储是面向行的:一行之中的所有值会连续存放。
但是,当一个OLAP的存储查询需要少数的列时(每行由100多个列组成),需要将数据从磁盘加载到内存中,并解析它们,并过滤掉那些不符合所需条件的列。这会造成很多不必要的查询消耗。

  • 列存储
    面向列存储的思想很简单:不要将所有值从一行存储在一起,而是将每个列中的所有值存储在一起。如果每个列都存储在一个单独的文件中,那么查询只需要读取和解析查询中使用的那些列,并且同样的列会更加易于压缩存储,这样就可以减少大量的工作。

    按列而不是按行存储关系数据

  • 列压缩
    通常列中的数据会出现重复,这就大大适用于压缩策略。可以根据列中的数据,使用不同的压缩技术。位图编码是数据仓库中的十分有效的压缩技术:


    压缩的位图索引存储单列。
  • 列排序

在列存储中,存储行的顺序并不重要。最简单的就是将它们按照插入的顺序排序,因为插入一个新行只意味着追加到每个列文件中。但是,选择逻辑顺序,可以带来几点好处。
(1) 排序之后的列是有序的,更有利于定位查询数据。(如:按照时间排序,查询某个时间段内产生的数据)
(2) 它有助于压缩列。如果主排序列没有许多不同的值,那么在排序之后,它将有许多重复的序列。简单的编码压缩之后,就可以极大的降低存储开销。

注意,对每个列进行独立排序是没有意义的,因为我们将不再知道列中属于哪一行。可以新建一个索引来指向对应的行。有序又要求高效,所以排序列的存储通常都是通过上文提及的SSTable格式在内存之中灵活处理。

4.聚合:物化视图

数据仓库另一个常用的优化方式是:物化视图。如前所述,数据仓库查询通常涉及聚合函数,如SQL中的计数、总和、平均值、最小值或最大值。如果相同的聚合被许多不同的查询使用,那么每次都对原始数据进行处理是十分浪费的。为什么不缓存查询中经常使用的一些计数或总数呢?

在关系型的数据模型中,它通常被定义为标准(虚拟)视图:一个表一样的对象,其内容是一些查询的结果。虚拟视图只是编写查询的快捷方式。当您从虚拟视图中读取时,SQL引擎将它展开为视图的底层查询,然后处理展开的查询。而物化视图是将实际的查询结果写入磁盘,不需要额外的计算过程。但是当底层数据发生变化时,物化视图需要更新,因为它是一个非规范化的数据复制。(类似于触发器的工作原理)。所以物化视图是不常用于OLTP数据库,而在数据仓库进行ETL时进行更新。

通过表的两个维度,来聚合数据

物化视图的好处是:某些查询变得非常快因为他们已经被预先计算。
但物化视图的缺点是:查询原始数据的灵活性不足。 例如,没有办法计算哪种销售成本超过100美元的商品的比例。因此,大多数数据仓库尽量保留尽可能多的原始数据,并且只使用物化视图作为对某些常用查询的性能提升。

小结:

梳理了OLAP与数据仓库的联系,同时总结了几种在数据仓库种子常用的存储结构与对应的优化方式。接下来,我们进入下一章来看看编码在存储之中的意义。>由于第三章的内容比较多,这里我们拆分成两篇读书笔记来记录。上一章我们聊了聊如何数据库是如何实现存储和检索的,今天这篇我们继续来看看OLTP与OLAP存储引擎的区别与联系。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容