本書是《內存數據管理(第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