本书是《内存数据管理(第2版)》的姊妹篇,更加全面、深入地介绍了SanssouciDB的技术原理,旨在向读者们分享哈索教授带领下(德国波茨坦大学哈索普拉特纳学院)的“企业平台和集成概念”小组从2006年开始,在企业应用的内存数据管理领域的研究成果,以及对未来技术发展趋势的展望。尽管SanssouciDB是一款在实验室搭建出来的、基于内存计算以及列式存储的数据库原型机,但其作为业界领先的内存计算产品SAP HANA的“鼻祖”,也可以帮助读者们更加深入地了解以及掌握SAP HANA。
为什么我们写这本书
从2006年起我们的HPI研究机构就开始针对企业应用的内存数据管理进行研究。随着SAP HANA的成功,关于字典编码和列式内存数据库的观点和概念获得了巨大动力。作为尖端产品,SAP HANA受到越来越多的用户的欢迎。因此我们意识到有必要在这一领域与大家做一些交流。无论是学生还是研发人员,对于概念及技术的深入了解是使用此技术的基础。
从2009年起我们就开始在我们的培训机构中开设内存数据管理的相关课程。当了解到现在在网络上流行公开课时,我立即决定将我们的课程对外开放。在2012年3月我们开始了在线教育,可通过http://www.openHPI.de网站了解详情。在13 126名参与第一次循环课程的学员中,有2 137人获得了我们授予的学位。欢迎在openHPI.de注册,我们会通知您接下来的新课程。
数以千计的学员用我们的材料完成了在线课程的作业及考试。这本书是基于我们在在线社区上提供的阅读材料编辑而成的。此外,我们结合了一些改进的建议,并提供了练习题及详细讲解。我们相信这本书将帮助您更好地了解字典编码和列式内存数据库。
章节浏览
授课时,课程内容一般都是按顺序编排的。您可以根据自己的兴趣爱好进行阅读学习。我们提供了一张学习路线图(见图I-1),这张路线图在第1章也会出现,便于大家了解。各章节间的关系在学习路线图中都有展示,比如第25章“差分缓冲区”是本书较后的内容。尽管如此,您可以提前阅读这一章节,但前提是您理解了不存在差分缓冲区的情况下“删除”、 “插入”和“更新”是如何运作的。
图I-1?学习路线图
每章节的后面都有自测题,您可以在本书后面找到对应的答案和讲解。
关于本书的撰写过程
我想感谢位于德国波茨坦大学的哈索·普拉特纳学院,他们作为我们这次研究“企业平台和集成概念”的主要团队做出了很大的贡献,可以说没有这个团队的支持,将不会有这本书。
特别感谢我们的在线教学核心团队,他们是:Ralf Teusner、Martin Grund、Anja Bog、Jens Krüger和Jügen Müller。
在准备及进行在线教学的过程中,研究团队回复了所有的提问邮件,并解决了学习资料中全部的报错和漏洞,在此我要感谢研究助理Martin Faust、Franziska H?ger、Thomas Kowark、Martin Lorenz、Stephan Müller、Jan Schaffner、Matthieu Schapranow、David Schwalb、Christian Schwarz、Christian Tinnefeld、Arian Treffer、Johannes Wust以及团队助理Andrea Lange的投入工作。
在撰写过程中,一些HPI本科生(Frank Blechschmidt、Maximilian Grundke、Jan Lindemann、Lars Rückert)及研究生(Sten ?chtner、Martin Boissier、Eketarina Gavrilova、Martin K?ppelmann、Paul M?ller、Michael Wolowyk)也在线上教学课程准备中做出了贡献。特别感谢Martin Boissier、Maximilian Grundke、Jan Lindemann和Jasper Schulz,他们进行了全书校对,并调整教学材料以使本书顺利出版。
帮助提升本书
我们致力于不断提升本书中的内容,如果您发现有任何问题,欢迎通过 hasso.plattner@hpi.uni-potsdam.de联系我们。
至今,我们已经收到很多读者发来的报错报告,这对在线教学学习材料的修改有很重要的帮助。热心的读者有:Shakir Ahmed、Heiko Betzler、Christoph Birkenhauer、Jonas Br?nzel、Dmitry Bondarenko、Christian Butzlaff、Peter Dell、Michael Dietz、Michael Max Eibl、Roman Ganopolskyi、Christoph Gilde、Hermann Grahm、Jan Grasshoff、Oliver Hahn、Ralf Hubert、Katja Huschle、Jens C. Ittel、Alfred Jockisch、Ashutosh Jog、Gerold Kasemir、Alexander Kirov、Jennifer K?enig、Stephan Lange、Francois-David Lessard、Verena Lommatsch、Clemens Müller、Hendrik Müller、Debanshu Mukherjee、Holger Pallak、Jelena Perfiljeva、Dieter Rieblinger、Sonja Ritter、Veronika Rodionova、Viacheslav Rodionov、Yannick R?dl、Oliver Roser、Alice-Rosalind Schell、Wolfgang Schill、Leo Schneider、Jürgen Seitz、David Siegel、Markus Steiner、Reinhold Thurner、Florian T?njes、Wolfgang Weinmann、Bert Wunderlich以及Dieter Zürn。
非常感谢大家的反馈意见。我们希望这些学习资料能在内存数据库社区中得到进一步改进。
哈索教授
哈索
(Hasso Plattner)
教授、博士
SAP公司创始人、监事会主席
哈索博士是SAP公司的创始人之一,并于2003年5月起担任SAP监事会主席。作为公司的监事会主席和首席软件顾问,他致力于制定SAP的中长期技术战略和发展方向。与此同时,哈索还负责领导SAP监事会技术委员会。
第 1 章简介 1
1.1课程目标 1
1.2基本理念 1
1.3学习路线图 3
1.4参考文献 3
1.5自测题 4
第一部分企业计算的未来
第 2 章 企业计算的新需求 7
2.1事件数据的处理 7
2.2整合结构化和非结构化数据 9
2.3社交网络和网站 11
2.4运营云环境 11
2.5移动运营 12
2.6生产及分销计划 13
2.7参考文献 14
2.8自测题 15
第 3 章企业应用的特征 17
3.1多样的应用 17
3.2OLTP与OLAP的对比 17
3.3OLAP与OLTP分离的缺点 18
3.4对比OLTP和OLAP的访问模式 19
3.5集OLTP与OLAP于一身的数据 19
3.6企业数据的特征 20
3.7参考文献 20
3.8自测题 21
第 4 章硬件架构的创新 23
4.1内存单元 23
4.2内存层级 25
4.3内部高速缓存 26
4.4地址转换 27
4.5预读取机制 28
4.6存储器层级和延迟 29
4.7非一致性内存访问架构(NUMA) 31
4.8不断扩展的主内存系统 33
4.9远程内存访问 34
4.10参考文献 34
4.11自测题 35
第 5 章SanssouciDB蓝图 37
5.1主存中的数据存储 37
5.2以列为导向 37
5.3列式存储的启示 38
5.4活动数据与非活动数据 39
5.5架构概览 40
5.6参考文献 41
5.7自测题 41
第二部分数据库存储技术的基础
第 6 章字典编码 45
6.1压缩举例 46
6.2排序的字典 48
6.3基于编码的操作 49
6.4自测题 49
第 7 章压缩 53
7.1前缀编码 53
7.2运行长度编码 55
7.3集群编码 56
7.4间接编码 58
7.5变量编码 61
7.6限制 63
7.7参考文献 63
7.8自测题 64
第 8 章内存中的数据布局 67
8.1应用性能上的缓存效应 67
8.2行式布局和列式布局 71
8.3列式布局的优点 72
8.4混合表布局 73
8.5参考文献 74
8.6自测题 75
第 9 章分区 77
9.1定义和分类 77
9.2垂直分区 78
9.3水平分区 78
9.4选择合适的分区策略 80
9.5参考文献 81
9.6自测题 81
第三部分内存数据库的操作
第 10 章删除 85
10.1物理删除示例 85
10.2参考文献 87
10.3自测题 87
第 11 章 插入 89
11.1示例 89
11.2性能方面的考虑 94
11.3自测题 95
第 12 章 更新 97
12.1更新类型 97
12.2更新示例 98
12.3参考文献 100
12.4自测题 101
第 13 章 元组重建 103
13.1简介 103
13.2行式数据库的元组重建 104
13.3列式数据库的元组重建 105
13.4补充示例和讨论 106
13.5自测题 107
第 14 章 扫描的性能 111
14.1简介 111
14.2行式布局:全表扫描 112
14.3行式布局:步长访问 113
14.4列式布局:全列扫描 114
14.5补充示例和讨论 115
14.6自测题 116
第 15 章 查询 117
15.1关系代数 117
15.2数据检索 118
15.3自测题 120
第 16 章 物化策略 123
16.1物化的几个方面 123
16.2案例 124
16.3早期物化 125
16.4晚期物化 127
16.5参考文献&nbs