【連載】關係型數據庫是如何工作的?(7) - 數據庫架構視圖

現在我們可以看看數據庫內部都有什麼組件。一個數據庫就是容易訪問和修改的信息集合,實際上,一組簡單的文件就可以做到。最簡單的數據庫SQLite就是由一組簡單文件組成的,並且是一組精心設計的一組文件,它允許你:

  • 通過事務保證數據的安全性和一致性;
  • 即時海量數據也能保證快速處理數據。

通常,一個數據的組件視圖如下:
數據庫組件視圖

在寫下這部分內容之前,我閱讀了很多書籍和論文,每一個都有其特有的方式來描述數據庫。因此就不要糾結我怎麼組織數據庫,或者我怎麼命名這些組件,因爲我已經爲此考慮良久來適合這篇文章。不同的組件並不重要,重要的是將一個數據庫劃分爲多個組件及其之間的聯繫。

核心組件

  • 進程管理器:許多數據庫都包含一個被管理的進程或線程池。而且爲了支持納秒,很多數據庫使用它們自己的線程而不是操作系統線程。
  • 網絡管理器:網絡IO是一個很重要的議題,尤其對於分佈式數據庫,因此一些數據庫有它們自己的網絡管理器。
  • 文件系統管理器:磁盤IO是數據庫的第一瓶頸,因此用一個管理器來完美的處理操作系統文件系統,甚至取而代之就極其重要。
  • 內存管理器:爲了避免磁盤IO的瓶頸,一個大的內存是必要的。但是如果你處理一個很大的內存,那就需要一個高效的管理器,尤其是當你有大量併發的使用內存的查詢請求時。
  • 安全管理器:用於管理身份認證和用戶權限。
  • 客戶端管理器:用於管理客戶端連接。

工具

  • 備份管理器:保護和恢復數據;
  • 恢復管理器:宕機後保證數據狀態的一致性,並正常重啓;
  • 監控管理器:記錄數據庫的行爲,並提供工具來監控;
  • 數據庫管理器:存儲元數據(像表的名字和結構),並提供工具管理數據庫、Schemas、表空間…

查詢管理

  • 查詢解析器:檢查查詢語句是否有效;
  • 查詢重寫器:預優化查詢;
  • 查詢優化器:優化查詢;
  • 查詢執行器:編譯並執行查詢語句;

數據管理

  • 事務管理器:處理事務;
  • 緩存管理器:在從磁盤讀或寫之前,把數據先放入內存;
  • 數據訪問管理器:訪問在磁盤上的數據。

這篇文章的其餘部分,我會聚焦於一個數據庫如何管理一個查詢的一下過程:

  • 客戶端管理
  • 查詢管理
  • 數據管理(包括數據恢復)

下一章節我們首先介紹客戶端管理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章