數據庫引擎開發以及常見數據庫內部原理學習(2)

管理員,你肯定其餘的文章比個人更有原創性或者技術性?雖然是一個寫很是簡陋的NoSQL數據庫的文章,雖然是基於別人的教學資料的總結,最主要的引導總結性的部分,我很差展開,原創性和技術性碾壓首頁上通常文章沒有一點問題,移除個人文章很好玩是嗎?java

線索
  • 數據庫調度流程
 
1.記錄:
  1. 請求解析
    1. 請求接受
      1. 從網絡上接收協議抱--網路
    2. 線程調度
      1. 調度系統資源--進程模型
    3. 解析數據
      1. 獲得用戶請求信息--協議
    4. 生成數據訪問流
      1. 解析SQL生成訪問計劃--優化
  2. 請求處理--運行庫
    1. 生成執行代碼
      1. 經過訪問計劃生成可執行代碼
    2. 執行代碼
    3. 訪問數據,寫入日誌
      1. 數據訪問
  3. 存儲訪問
    1. 數據掃描--數據管理
    2. 索引掃描--索引管理
    3. 數據插入--數據管理、索引管理
    4. 數據更新--數據管理、索引管理
    5. 數據刪除--數據管理、索引管理
  4. 日誌訪問--日誌管理
    1. 記錄添加
    2. 記錄讀取
  5. EmeraldDB功能
    1. 客戶端支持多節點集羣
    2. 不存表或集合的概念
    3. 數據格式是JSON,存儲格式是BSON
    4. 對數據進行插入、搜索與刪除
    5. 搜索必須按照_id字段
  6. EDB總體架構
    1. 經過散列算法放在指定節點
  7. EDB架構
    1. CLI--client
    2. java Driver--driver
    3. =======================
    4. 請求解析--MSG、PMD
    5. 請求處理--RTN
    6. 存儲訪問--DMS、IXM
  8. 客戶端類圖
    1. 客戶端吧命令發送到一個Command工廠,工廠裏面再去匹配命令,
    2. 而命令都是實現了ICommand接口,這個流程我以爲不是很難理解。就很少說了。
  9. 引擎類以及流程
    1. PMD調用OSS層的一個函數,監聽某個端口,把監聽到命令轉換成x給MSG,
    2. MSG把它轉換成系統能識別的結構,而後調用RTN層,RTN層去調用IXM進行查詢操做,
    3. 最終經過DMS層完成整個數據的操做。
  10. PMD類圖以及其流程
    1. KRCB是內核控制塊,其餘控制塊都是它的字塊
    2. EDU的管理器,就是線程管理器
    3. EDUCB線程的狀態
    4. Event線程信息
    5. Options操做選項
  11. MSG類圖
    1. 協議封裝
  12. RTN類圖
    1. 通常數據庫最複雜得模塊,可是咱們這裏是簡化版,東西不多,原本日誌,事務回滾都是這裏控制的。
  13. IXM類圖
    1. 索引管理器,咱們這裏使用hash索引,只能作精確的匹配
  14. DMS類圖
    1. 數據庫底層文件操做,以及存儲結構操做
  15. OOS類圖
    1. 封裝系統底層的不一樣平臺的基礎操做。
    2. latch、內存操做,隊列
2.簡化:
  1. 通常數據庫能夠大體分爲:請求解析,請求訪問,數據訪問,日誌訪問,四大部分!
  2. EDB的客戶端是一個基於工廠模式的請求轉發架構
  3. PMD是引擎的線程調度模塊
  4. MSG是引擎的協議模塊
  5. RTN是運行支撐模塊
  6. IMX是hash索引模塊
  7. DMS是文件操做模塊
  8. OSS是跨平臺基礎函數模塊(封裝latch、內存操做、隊列操做)
3.背誦:
4.思考:
  1. 數據庫一門語言,它的主要操做是把操做命令轉換成數據庫執行命令。
  2. 這裏面最精彩的地方莫過於sql優化引擎對sql的優化處理,可是很惋惜,我這個系列的筆記暫時不會涉及到這個方面,
  3. 可是,這個是我最喜歡的部分。未來有機會我也找個機會分享這個東西!
  4. 數據庫的主要模塊可大致分爲命令的解析,這個過程其實很複雜,
  5. 甚至是數據庫最複雜的部分,而後就是數據的操做,這個是最核心的模塊,
  6. 可是邏輯我我的並不認爲是很是麻煩的。固然還有日誌模塊,咱們這個數據庫系統的日誌模塊是很是簡單,
  7. 可是,未來講到數據庫日誌模塊的時候,我將引伸到mysql,Oracle之類的數據庫,
  8. 我以爲數據庫的日誌是個很是強大的東西,甚至數據庫不少衍生產品都是基於此。
5.複習:
總結
  1. 數據庫的組成部分有簡單,有複雜,可是歸根結底基礎的操做是不變的,核心本質是不變。
  2. 用王濤老師的一句話說,數據庫的原理如今都是大路貨了,人人都知道,
  3. 數據庫怎麼處理和取捨纔是構建一個數據庫的重點。
相關文章
相關標籤/搜索