面向列式內(nèi)存數(shù)據(jù)庫的代碼生成技術
發(fā)布時間:2022-10-20 09:01
在飛速發(fā)展的信息時代,對于各類信息的存儲、查詢需求越來越大,尤其是當現(xiàn)實社會的各類信息都被轉化成電子信息存放和表示時。對于數(shù)據(jù)的存儲、加工、查詢的需求越來越高。數(shù)據(jù)庫是數(shù)據(jù)處理的中堅力量,如何提高查詢性能是數(shù)據(jù)庫設計與實現(xiàn)的重要議題。數(shù)據(jù)庫擁有復雜的類型體系和解釋執(zhí)行的計算方式,帶來許多冗余計算,這導致其執(zhí)行效率較低,無法充分利用硬件特性;而傳統(tǒng)編譯器又只能在執(zhí)行前生成代碼,無法消除數(shù)據(jù)庫帶來的不確定性。如果在執(zhí)行時使用數(shù)據(jù)庫的動態(tài)信息和用戶查詢請求中的信息,去掉不需要的冗余指令,優(yōu)化代碼邏輯,將進一步提高執(zhí)行效率。本文討論了在分布式列式內(nèi)存數(shù)據(jù)庫中,使用即時編譯器作為工具,根據(jù)數(shù)據(jù)庫中的算子邏輯和動態(tài)執(zhí)行信息,生成更優(yōu)執(zhí)行代碼的技術。本文沒有采用將整個查詢分析樹轉化成執(zhí)行函數(shù)的做法,因為在分布式環(huán)境下,列式存儲的引擎將打破這樣轉化帶來的優(yōu)勢,而只在單個算子內(nèi)部進行代碼生成。本文采用Impala數(shù)據(jù)引擎封裝的即時編譯庫作為底層支撐組件,在分布式內(nèi)存數(shù)據(jù)庫Goldfish中,實現(xiàn)了排序、分組兩個算子和表達式計算部分的編譯執(zhí)行,并提出了基于元組數(shù)目進行自適應代碼生成的方法。文章詳細介紹了數(shù)...
【文章頁數(shù)】:102 頁
【學位級別】:碩士
【文章目錄】:
摘要
abstract
第一章 緒論
1.1 研究工作的背景與意義
1.2 代碼生成技術的國內(nèi)外研究歷史與現(xiàn)狀
1.3 本文的主要貢獻與創(chuàng)新
1.4 本論文的結構安排
第二章 相關技術和理論基礎
2.1 分布式內(nèi)存數(shù)據(jù)庫引擎簡述
2.2 即時編譯技術(JIT)的原理
2.3 編譯器的優(yōu)化策略
2.3.1 循環(huán)相關優(yōu)化
2.3.2 內(nèi)聯(lián)相關優(yōu)化
2.4 LLVM編譯器框架簡介
2.4.1 LLVM編譯器的架構
2.4.2 LLVM編譯器的即時編譯技術
2.4.3 LLVM編譯器的中間語言
2.5 即時編譯引擎的使用
2.5.1 LLVM JIT引擎的使用流程
2.5.2 即時編譯支撐組件簡介
2.6 CPU特性與代碼生成
2.6.1 高速緩存
2.6.2 分支預測技術
2.7 函數(shù)調(diào)用過程
2.8 數(shù)據(jù)庫中的代碼生成技術
2.8.1 算子融合
2.8.2 算子內(nèi)代碼生成
2.9 本章小結
第三章 分布式數(shù)據(jù)庫系統(tǒng)概述與總體架構
3.1 系統(tǒng)背景及整體架構
3.1.1 系統(tǒng)背景
3.1.2 系統(tǒng)整體架構
3.2 查詢引擎的架構
3.3 代碼生成部分的基本結構
3.4 本章小結
第四章 分布式內(nèi)存數(shù)據(jù)庫中的代碼生成方案設計
4.1 代碼生成模塊設計概述
4.2 分布式代碼生成方案選擇
4.2.1 分布式內(nèi)存數(shù)據(jù)庫中的算子融合
4.2.2 分布式內(nèi)存數(shù)據(jù)庫中的動態(tài)代碼生成
4.3 算子內(nèi)代碼生成的方案設計
4.3.1 代碼生成使用時機
4.3.2 分布式環(huán)境中的算子內(nèi)代碼生成策略
4.3.3 排序算子中的代碼生成方案
4.3.4 分組算子中的代碼生成方案
4.3.5 聚合算子中的代碼生成方案
4.3.6 物化算子中的代碼生成方案
4.4 本章小結
第五章 分布式內(nèi)存數(shù)據(jù)庫中的代碼生成實現(xiàn)方案
5.1 裁剪動態(tài)編譯庫
5.1.1 核心類的裁剪和修改
5.1.2 元組描述結構的修改和裁剪
5.1.3 內(nèi)存數(shù)據(jù)庫中的代碼生成流程
5.2 中間數(shù)據(jù)結構實現(xiàn)
5.3 排序算子的代碼生成實現(xiàn)
5.3.1 整體流程
5.3.2 中間數(shù)據(jù)初始化
5.3.3 物化元組代碼的生成方案
5.3.4 元組比較代碼的生成方案
5.3.5 排序算子提取行號的實現(xiàn)方案
5.4 分組算子的代碼生成實現(xiàn)
5.4.1 整體流程
5.4.2 拼接字符串的函數(shù)代碼生成方案
5.5 聚合算子的代碼生成實現(xiàn)
5.5.1 整體流程
5.5.2 表達式計算輸入輸出接口
5.5.3 生成表達式計算函數(shù)的實現(xiàn)方案
5.6 物化算子的代碼生成實現(xiàn)
5.6.1 分布式執(zhí)行流程及代碼生成時機
5.6.2 確定行號集合
5.6.3 組裝數(shù)據(jù)
5.7 本章小結
第六章 測試與分析
6.1 功能測試
6.1.1 測試目標及方案
6.1.2 排序算子的功能測試
6.1.3 分組算子的功能測試
6.1.4 聚合算子的功能測試
6.2 性能測試
6.2.1 測試目標及方案
6.2.2 排序算子的性能測試
6.2.3 分組算子的性能測試
6.2.4 聚合算子的性能測試
6.3 系統(tǒng)整體測試
6.3.1 測試環(huán)境
6.3.2 測試步驟
6.3.3 排序功能的測試結果
6.3.4 聚合和分組功能的測試結果
6.4 本章小結
第七章 總結與展望
致謝
參考文獻
【參考文獻】:
碩士論文
[1]基于MongoDB的排水設施監(jiān)管養(yǎng)護系統(tǒng)的應用研究[D]. 劉儀軒.東華大學 2020
本文編號:3694175
【文章頁數(shù)】:102 頁
【學位級別】:碩士
【文章目錄】:
摘要
abstract
第一章 緒論
1.1 研究工作的背景與意義
1.2 代碼生成技術的國內(nèi)外研究歷史與現(xiàn)狀
1.3 本文的主要貢獻與創(chuàng)新
1.4 本論文的結構安排
第二章 相關技術和理論基礎
2.1 分布式內(nèi)存數(shù)據(jù)庫引擎簡述
2.2 即時編譯技術(JIT)的原理
2.3 編譯器的優(yōu)化策略
2.3.1 循環(huán)相關優(yōu)化
2.3.2 內(nèi)聯(lián)相關優(yōu)化
2.4 LLVM編譯器框架簡介
2.4.1 LLVM編譯器的架構
2.4.2 LLVM編譯器的即時編譯技術
2.4.3 LLVM編譯器的中間語言
2.5 即時編譯引擎的使用
2.5.1 LLVM JIT引擎的使用流程
2.5.2 即時編譯支撐組件簡介
2.6 CPU特性與代碼生成
2.6.1 高速緩存
2.6.2 分支預測技術
2.7 函數(shù)調(diào)用過程
2.8 數(shù)據(jù)庫中的代碼生成技術
2.8.1 算子融合
2.8.2 算子內(nèi)代碼生成
2.9 本章小結
第三章 分布式數(shù)據(jù)庫系統(tǒng)概述與總體架構
3.1 系統(tǒng)背景及整體架構
3.1.1 系統(tǒng)背景
3.1.2 系統(tǒng)整體架構
3.2 查詢引擎的架構
3.3 代碼生成部分的基本結構
3.4 本章小結
第四章 分布式內(nèi)存數(shù)據(jù)庫中的代碼生成方案設計
4.1 代碼生成模塊設計概述
4.2 分布式代碼生成方案選擇
4.2.1 分布式內(nèi)存數(shù)據(jù)庫中的算子融合
4.2.2 分布式內(nèi)存數(shù)據(jù)庫中的動態(tài)代碼生成
4.3 算子內(nèi)代碼生成的方案設計
4.3.1 代碼生成使用時機
4.3.2 分布式環(huán)境中的算子內(nèi)代碼生成策略
4.3.3 排序算子中的代碼生成方案
4.3.4 分組算子中的代碼生成方案
4.3.5 聚合算子中的代碼生成方案
4.3.6 物化算子中的代碼生成方案
4.4 本章小結
第五章 分布式內(nèi)存數(shù)據(jù)庫中的代碼生成實現(xiàn)方案
5.1 裁剪動態(tài)編譯庫
5.1.1 核心類的裁剪和修改
5.1.2 元組描述結構的修改和裁剪
5.1.3 內(nèi)存數(shù)據(jù)庫中的代碼生成流程
5.2 中間數(shù)據(jù)結構實現(xiàn)
5.3 排序算子的代碼生成實現(xiàn)
5.3.1 整體流程
5.3.2 中間數(shù)據(jù)初始化
5.3.3 物化元組代碼的生成方案
5.3.4 元組比較代碼的生成方案
5.3.5 排序算子提取行號的實現(xiàn)方案
5.4 分組算子的代碼生成實現(xiàn)
5.4.1 整體流程
5.4.2 拼接字符串的函數(shù)代碼生成方案
5.5 聚合算子的代碼生成實現(xiàn)
5.5.1 整體流程
5.5.2 表達式計算輸入輸出接口
5.5.3 生成表達式計算函數(shù)的實現(xiàn)方案
5.6 物化算子的代碼生成實現(xiàn)
5.6.1 分布式執(zhí)行流程及代碼生成時機
5.6.2 確定行號集合
5.6.3 組裝數(shù)據(jù)
5.7 本章小結
第六章 測試與分析
6.1 功能測試
6.1.1 測試目標及方案
6.1.2 排序算子的功能測試
6.1.3 分組算子的功能測試
6.1.4 聚合算子的功能測試
6.2 性能測試
6.2.1 測試目標及方案
6.2.2 排序算子的性能測試
6.2.3 分組算子的性能測試
6.2.4 聚合算子的性能測試
6.3 系統(tǒng)整體測試
6.3.1 測試環(huán)境
6.3.2 測試步驟
6.3.3 排序功能的測試結果
6.3.4 聚合和分組功能的測試結果
6.4 本章小結
第七章 總結與展望
致謝
參考文獻
【參考文獻】:
碩士論文
[1]基于MongoDB的排水設施監(jiān)管養(yǎng)護系統(tǒng)的應用研究[D]. 劉儀軒.東華大學 2020
本文編號:3694175
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/3694175.html
最近更新
教材專著