課程介紹:
本課程為原先《數(shù)據(jù)庫引擎開發(fā)》課程第二版改版,增加了大家較為感興趣的“SQL優(yōu)化器開發(fā)”部分,課程名也改成《數(shù)據(jù)庫引擎與SQL優(yōu)化器開發(fā)》。SQL優(yōu)化器設計是任何數(shù)據(jù)庫的核心技術,加入這部分內(nèi)容后,本課程所研發(fā)的數(shù)據(jù)庫已經(jīng)超出原有范疇,迥然變身成當前最時尚的NewSQL數(shù)據(jù)庫!
中國IT行業(yè)起步較晚,加上國情和民族性格的原因,大部分人更樂于使用外國人現(xiàn)成的軟件(大部分還是盜版),開發(fā)點小應用,系統(tǒng)級別的軟件幾乎沒有膽量去挑戰(zhàn)。在大多數(shù)國人的心目中,象大型操作系統(tǒng),大型數(shù)據(jù)庫系統(tǒng)這樣的軟件,就是個禁區(qū)。對于性格容易自卑,技術學習沒有恒心和耐力,遇難則退的國人,根本從來沒有想象過有一天,自己也有能力去挑戰(zhàn)。君不見,PUB上的數(shù)據(jù)庫愛好者們,對于各種Oracle內(nèi)幕,比如塊構造,隱藏參數(shù)等津津樂道,對于調(diào)整好一條SQL使之在甲骨文的優(yōu)化器下能高性能運轉(zhuǎn)具有巨大的滿足感成功感,仿佛自己掌握了天下最有價值的真理,駕馭了天下最有難度的技術。但對于設計,編寫出這個數(shù)據(jù)庫的人來說,他們看到此情此景,只好躲在一邊偷偷哂笑。用數(shù)據(jù)庫的稱為大師,那么自己寫出一個數(shù)據(jù)庫的又該稱為什么呢?
我們具有聰明的頭腦,缺乏的是高瞻遠矚的眼光和迎難而上的勇氣!現(xiàn)在,我們設計了一個新的課程,參與者將有機會學習怎樣用C++寫出一個完整的數(shù)據(jù)庫軟件!而這個課程幾乎是免費的!課程不光培養(yǎng)技術,更加培養(yǎng)勇氣!
《數(shù)據(jù)庫引擎開發(fā)》課程概述:
該課程通過15次課,大約30課時介紹創(chuàng)建一個簡易分布式文檔型數(shù)據(jù)庫
課程目標
通過本課學員可以:
深入理解NoSQL數(shù)據(jù)庫的內(nèi)部工作原理
實現(xiàn)一個可存取數(shù)據(jù)的分布式數(shù)據(jù)存儲
理解文檔式NoSQL數(shù)據(jù)庫的適用場景
了解關系型數(shù)據(jù)庫與非關系型的針對特性與各自的實現(xiàn)機制
暫時還沒有列入本課程的內(nèi)容:
實現(xiàn)關系型數(shù)據(jù)庫的ACID
實現(xiàn)商用型非關系型數(shù)據(jù)庫
保證數(shù)據(jù)的高可用性與穩(wěn)定性
SQL語法解析
授課對象:
熟悉C/C++語言
對數(shù)據(jù)庫底層實現(xiàn)感興趣的IT人或?qū)W習者有興趣往源代碼方向發(fā)展的挑戰(zhàn)者
預期收獲:
1 知道怎樣去設計和實現(xiàn)一個數(shù)據(jù)庫,從而獲得加入數(shù)據(jù)庫軟件廠商的研發(fā)團隊的機會
2 通過課程極度熟悉c++編程,特別是socket編程和內(nèi)存管理,這是晉升c++高手的必經(jīng)之路,c語言的能力屬于內(nèi)功級,可以增加IT人的底氣,無論從事系統(tǒng)級軟件,還是底層開發(fā),嵌入式開發(fā),移動開發(fā),客戶端開發(fā)都能得心應手!具備源碼級挑戰(zhàn)能力的高手深受各大企業(yè)的歡迎,金飯碗指日可待!
3 加深對數(shù)據(jù)庫的理解,即使只是數(shù)據(jù)庫用家也能從中獲益
講師簡介:
王濤
ITPUB資深斑竹(wangzhongnew),畢業(yè)于加拿大卡爾加里大學,于2005年在IBM多倫多實驗室進行DB2數(shù)據(jù)庫的研發(fā)與技術支持,并參與設計IBM下一代彈性數(shù)據(jù)平臺。2012年創(chuàng)立SequoiaDB巨杉NoSQL數(shù)據(jù)庫并擔任總架構師與首席技術官。
課程目錄:
第一課:NoSQL數(shù)據(jù)庫簡介與環(huán)境配置
講述數(shù)據(jù)庫的核心功能,以及NoSQL與關系型數(shù)據(jù)庫的側(cè)重點
簡述該課程的目標,在課程結束后能夠?qū)崿F(xiàn)的數(shù)據(jù)庫功能
介紹數(shù)據(jù)庫的整體架構
介紹開發(fā)環(huán)境的搭建
預計時間兩小時
第二課:建立數(shù)據(jù)庫連接
實現(xiàn)單線程客戶端連接,能夠向服務端發(fā)送請求
實現(xiàn)多線程服務端連接,能夠從客戶端接收請求
預計時間兩小時
第三課:閥鎖,配置,日志等
定義服務端的一些底層基礎組件
預計時間兩小時
第四課:數(shù)據(jù)庫引擎底層搭建1
建立線程數(shù)據(jù)結構
建立線程調(diào)度機制
預計時間兩小時
第五課:消息封裝
定義客戶端服務器的消息通訊結構
預計時間兩小時
第六課:數(shù)據(jù)的持久化存放
Mmap,內(nèi)存與磁盤的映射
數(shù)據(jù)塊的分配與回收
預計時間兩小時
第七課:數(shù)據(jù)的存儲結構
BSON與數(shù)據(jù)記錄的結構設計
數(shù)據(jù)文件存儲結構設計
預計時間兩小時
第八課:數(shù)據(jù)的插入,讀取與刪除
數(shù)據(jù)的插入,查詢與刪除
客戶端增加相應的功能
預計時間兩小時
第九課:散列索引
數(shù)據(jù)鍵的散列桶與內(nèi)存結構
數(shù)據(jù)庫啟動自動建立散列索引
預計時間兩小時
第十課:數(shù)據(jù)庫理論
介紹數(shù)據(jù)庫的一些基本原理,包括事務,SQL編譯與執(zhí)行等
預計時間兩小時
第十一課:SQL解析和優(yōu)化
SQL編譯進階,優(yōu)化器概念與實現(xiàn)原理。
預計時間2小時
第十二課:Java驅(qū)動
連接多點數(shù)據(jù)庫并查詢
建立數(shù)據(jù)的散列機制,能夠在正確的分區(qū)上查找數(shù)據(jù)
預計時間一小時
第十三課:監(jiān)控、性能調(diào)優(yōu)和測試
介紹數(shù)據(jù)庫監(jiān)控和調(diào)優(yōu)理論,并實現(xiàn)數(shù)據(jù)庫的基本監(jiān)控快照功能
介紹軟件測試流程與自動化測試
預計時間兩小時
第十四課:Java應用
建立Java應用程序,使用驅(qū)動與數(shù)據(jù)庫通訊
預計時間兩小時
第十五課:總結
總結前14節(jié)課的步驟
擴展討論
多數(shù)據(jù)層次(表空間,表)
日志
高可用性
持久性
鎖
事務
多字段查詢與更新
B樹索引
SQL解析
基于規(guī)則的SQL優(yōu)化器
基于開銷的SQL優(yōu)化器
預計時間2小時