OceanBase數(shù)據(jù)庫源碼解析
定 價:69 元
OceanBase作為當今最先進的分布式關系型數(shù)據(jù)庫之一,在開源之后受到了業(yè)界的廣泛關注。為了幫助數(shù)據(jù)庫內核研發(fā)人員、科研工作者、數(shù)據(jù)庫技術愛好者理解OceanBase內核,本書從OceanBase開源版的源代碼出發(fā),介紹其實現(xiàn)機制和技術細節(jié)。本書的主要內容包括:OceanBase概述、OceanBase的架構、OBServer、存儲引擎、SQL引擎、事務引擎、高可用、多租戶、安全管理等。本書盡可能沿著SQL語句的執(zhí)行路徑對上述主題進行詳細介紹,以使讀者對OceanBase的內部運作機理能有全面和深入的認識。本書適合從事數(shù)據(jù)庫領域相關研發(fā)的人員、高等院校相關專業(yè)研究生或高年級本科生閱讀,也可以作為數(shù)據(jù)庫特別是分布式數(shù)據(jù)庫相關課程的補充讀物。
前言隨著處理規(guī)模和數(shù)據(jù)規(guī)模的日益增長,傳統(tǒng)集中式數(shù)據(jù)庫的擴展能力幾乎已達到極限,在這類場景中,人們越來越多地開始使用分布式數(shù)據(jù)庫系統(tǒng)。在開源數(shù)據(jù)庫世界中,可供選擇的成熟分布式數(shù)據(jù)庫系統(tǒng)并不多,OceanBase正是其中極具代表性的一種。OceanBase開源版(社區(qū)版)源自在支付寶、阿里巴巴集團內久經(jīng)考驗的OceanBase,同時在性能上也通過TPC-C和TPC-H基準測試得到過驗證,因而受到了很多企業(yè)用戶以及數(shù)據(jù)庫愛好者的關注。為了幫助來自不同領域的企業(yè)和個人開發(fā)者更好地加入到OceanBase社區(qū)版的演進過程中,我們決定寫一本技術性書籍,從源碼級別分析OceanBase,用該書介紹OceanBase內部的實現(xiàn)細節(jié),揭示一個分布式數(shù)據(jù)庫系統(tǒng)的內部奧秘。我們希望本書能夠幫助分布式數(shù)據(jù)庫系統(tǒng)研發(fā)人員、開源數(shù)據(jù)庫技術愛好者、數(shù)據(jù)庫用戶、科研人員更好地理解OceanBase,進而能夠為OceanBase貢獻特性或者更好地將OceanBase應用于各種不同的場景中。讀者定位本書面向OceanBase內核開發(fā)人員、分布式數(shù)據(jù)庫技術愛好者、數(shù)據(jù)庫運維人員、高校學生、教師以及其他希望了解OceanBase數(shù)據(jù)庫內部實現(xiàn)方法的讀者。為了更好地理解本書的內容,我們希望讀者能具備以下基礎: 有一定C 語言開發(fā)經(jīng)驗。了解數(shù)據(jù)庫系統(tǒng)(特別是分布式數(shù)據(jù)庫系統(tǒng))的基本概念和常用術語。學習過有關數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)原理的書籍或者課程。本書組織本書的組織如下:第1章介紹OceanBase的發(fā)展歷程、特性、應用案例以及基于源代碼的編譯和部署等內容。第2章介紹OceanBase的架構、源碼結構和安裝目錄結構,并且專門介紹了OceanBase的專用代理服務器ODP。第3章介紹OceanBase集群中每個節(jié)點上的總控進程OBServer,對其中的網(wǎng)絡子系統(tǒng)、多租戶環(huán)境、線程結構、連接和會話管理、總控服務以及配置子系統(tǒng)進行了專門的分析。第4章介紹OceanBase的存儲引擎,對元數(shù)據(jù)存儲、數(shù)據(jù)的物理存儲、內存數(shù)據(jù)與磁盤數(shù)據(jù)之間的轉儲和合并、多級緩存等內外存管理機制進行詳細分析。第5章介紹OceanBase的SQL引擎,以SQL語句的處理過程為主線逐一分析其中的詞法和語法分析、計劃緩存、語義分析、重寫、優(yōu)化、執(zhí)行等步驟。第6章介紹OceanBase的事務引擎,給出了OceanBase中本地事務和分布式事務的呈現(xiàn)和管理方式以及保存點的實現(xiàn)原理,并對其重做日志、多版本并發(fā)控制等機制的實現(xiàn)進行了分析。第7章介紹OceanBase的高可用機制,首先解釋了高可用機制的基礎理論Paxos協(xié)議,然后對分布式選舉和以其為基礎的多副本容錯進行分析,最后詳細解析了數(shù)據(jù)庫對象閃回機制和備份恢復措施的實現(xiàn)方式。第8章介紹OceanBase中用于資源隔離的多租戶機制,對租戶和各種資源限制的定義和存儲方式進行分析,并詳細分析了租戶之間的資源隔離和自動資源均衡機制的實現(xiàn)細節(jié)。第9章介紹OceanBase中的安全管理,分析了用戶身份鑒別、訪問控制、安全審計等安全機制的具體實現(xiàn)方法。源代碼版本本書對OceanBase社區(qū)版的分析工作基于OceanBase社區(qū)版的3.1.0版本,該版本的源代碼可以從以下地址下載:https://github.com/oceanbase/oceanbase/tree/3.1。由于作者的水平有限,本書難免存在差錯或遺漏等,若您在閱讀時發(fā)現(xiàn)任何問題以及想對本書提出批評和建議,都可以發(fā)送電子郵件到y(tǒng)wpeng@whu.edu.cn,作者不勝感激。由于時間有限,作者可能無法一一回答所有的電子郵件,但我們會將發(fā)現(xiàn)的錯誤和收到的建議整理后公布在作者個人網(wǎng)站(http://www.pengyuwei.net/obbook/)上本書的頁面中。致謝感謝我的妻女。在寫作本書的近一年時間里,她們從精神上給予了巨大的支持,使我能沒有后顧之憂地埋頭啃讀代碼和寫作。感謝兩位合作者以及OceanBase團隊的澤寰、羨林等技術專家。理解一個253萬行代碼的龐大數(shù)據(jù)庫系統(tǒng)是一項艱難的任務,正是他們的幫助和及時解答,才使得我能在相對可控的時間內完成本書。感謝OceanBase團隊張婷婷女士為本書付出的努力和耗費的心血。感謝每一位閱讀本書的讀者,你們給予了作者莫大的鼓勵,也是作者繼續(xù)前行的動力,希望本書能對你們有所幫助。彭煜瑋
目錄前言第1章OceanBase概述1.1OceanBase簡介及發(fā)展歷程1.2OceanBase的特性1.3OceanBase的應用案例1.4OceanBase的編譯和部署1.4.1環(huán)境依賴1.4.2構建/打包 OceanBase 數(shù)據(jù)庫1.4.3部署OceanBase1.5OceanBase的性能1.6小結第2章OceanBase的架構2.1架構概述2.2源碼結構2.2.1依賴庫2.2.2內核源碼2.2.3其他子目錄2.3安裝目錄結構2.3.1執(zhí)行文件目錄2.3.2配置文件目錄2.3.3運行日志目錄2.3.4運行狀態(tài)目錄2.3.5數(shù)據(jù)文件目錄2.4ODP2.5小結第3章OBServer3.1OBServer結構3.2網(wǎng)絡子系統(tǒng)3.3多租戶環(huán)境3.4線程架構3.5連接和會話管理3.5.1ObMySQLHandler3.5.2ObRpcHandler3.5.3請求投送3.5.4請求處理3.5.5會話管理3.6總控服務3.7配置子系統(tǒng)3.8小結第4章存儲引擎4.1元數(shù)據(jù)存儲4.1.1系統(tǒng)表4.1.2多版本模式服務4.1.3DDL服務4.1.4模式緩存4.1.5模式刷新4.2數(shù)據(jù)的物理存儲4.2.1行存儲格式4.2.2微塊4.2.3宏塊4.2.4SSTable和存儲文件4.2.5MemTable4.2.6分區(qū)組、表組等4.2.7數(shù)據(jù)壓縮4.3轉儲和合并4.3.1凍結4.3.2轉儲和Minor Compaction4.3.3Major Compaction4.4多級緩存4.5小結第5章SQL引擎5.1SQL引擎結構5.2解析器5.2.1詞法分析器5.2.2語法分析器5.2.3SQL語句的解析5.2.4語法樹的結構5.3計劃緩存5.3.1計劃和計劃緩存的結構5.3.2緩存計劃5.3.3查找計劃5.3.4淘汰計劃緩存和失效5.4語義分析器5.4.1DROP TABLE語句的語義分析5.4.2語句樹(邏輯計劃)結構5.5重寫器5.5.1預處理5.5.2重寫5.5.3后處理5.6優(yōu)化器5.6.1路徑與邏輯計劃5.6.2初始計劃生成5.6.3并行優(yōu)化5.6.4代價模型5.6.5代碼生成5.7執(zhí)行器5.7.1命令執(zhí)行5.7.2計劃執(zhí)行框架5.7.3并行執(zhí)行框架5.7.4并行框架實現(xiàn)5.8小結第6章事務引擎6.1事務管理6.1.1事務的結構6.1.2事務控制6.1.3語句級原子性6.1.4全局時間戳6.2保存點6.2.1實現(xiàn)原理6.2.2定義保存點6.2.3釋放保存點6.2.4回滾到指定保存點6.3Redo日志6.3.1日志文件類型6.3.2日志的產(chǎn)生6.3.3日志的回放6.3.4日志容災6.3.5日志的控制與回收6.4本地事務6.4.1本地單分區(qū)事務6.4.2本地多分區(qū)事務6.5分布式事務6.5.1分布式事務的構造6.5.2兩階段提交6.6并發(fā)控制6.6.1MVCC6.6.2多版本讀一致性6.6.3多版本讀一致性實現(xiàn)6.7封鎖及兩階段鎖2PL6.7.1鎖使用6.7.2鎖粒度和互斥6.7.3鎖存儲6.7.4鎖的獲取與釋放6.7.5喚醒等待事務6.7.6死鎖處理6.8ELR技術6.8.1解鎖時機6.8.2解鎖之后數(shù)據(jù)的可見性6.9事務隔離級別6.10弱一致性讀6.10.1SQL語句的一致性級別6.10.2事務的一致性級別6.10.3弱一致性讀配置項6.10.4時間戳生成方式6.11小結第7章高可用7.1高可用架構7.1.1Paxos協(xié)議7.1.2分布式選舉7.1.3節(jié)點故障處理7.1.4多副本日志同步7.2對象閃回7.2.1回收站7.2.2刪除到回收站7.2.3從回收站恢復7.2.4清理回收站7.3備份恢復7.3.1物理備份架構7.3.2日志歸檔7.3.3數(shù)據(jù)備份7.3.4取消備份7.3.5數(shù)據(jù)恢復7.3.6邏輯備份7.4小結第8章多租戶8.1租戶8.1.1租戶管理8.1.2租戶操作8.2資源隔離8.2.1租戶資源定義8.2.2資源管理和操作8.2.3資源隔離8.2.4資源使用控制8.3資源自動均衡8.3.1自動均衡概述8.3.2自動均衡的發(fā)起8.3.3再均衡任務的構建與分發(fā)8.3.4手動遷移8.4小結第9章安全管理9.1身份鑒別9.1.1鑒別方式9.1.2身份認證全過程9.2訪問控制9.2.1用戶9.2.2授予及撤銷權限9.2.3訪問權限檢查9.3安全審計9.4小結