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