本文翻譯自Coding-Geek文章:《 How does a relational database work》。原文鏈接:http://coding-geek.com/how-databases-work/#Buffer-Replacement_strategies 本文翻譯了如下章節, 介紹數據庫整體框架:
所謂的數據庫是指一組易于訪問和修改的數據集合。但是,但是一組簡單的文件也能實現這個功能。實際上,最近簡單的一些數據庫系統如SQLLite實現的功能與一組文件沒有大的差異。但是,SQLLite可以算作設計得非常優秀的一組文件。因為它支持:
通過事務管理保證了數據的安全性和一致性。 大數據快速處理能力,能處理百萬級的數據。我們現在來了解一下數據庫包含哪些重要的組件,請看這張數據數據庫架構圖。
在寫下這篇文章之前,我已經研究了大量關于如何實現數據庫的書籍、文檔、甚至源代碼。因此,別太在意我為何要這樣設計數據庫的架構圖,以及這些組件為何取這樣的名字。針對這篇文檔,我做了一些取舍。真正需要關注的是這些組件承擔的不同職責。 一句話,數據庫是由一組相互交互,功能不同的組件構成的系統。
The PRocess manager 進程管理器。許多數據庫都有專用的進程池或者線程池管理。甚至,僅僅為了獲得納秒級的性能提升,許多現代處理器設計了專用的線程,代替操作系統的線程。
The network manager 網絡管理。對于分布式數據庫來講,網絡I/O是一個關鍵問題。所以設計了專用的網絡管理器。
File system manager 文件系統管理。磁盤I/O是數據庫最關鍵的性能瓶頸(Disk I/O is the first bottleneck of a database)。設計一個文件管理器能完美的與操作系統的文件系統交互,甚至替換操作系統的文件系統是非常主要的。
The memory manager 內存管理。為了避免頻繁的磁盤I/O操作,通過一個塊大的內存來緩存數據是必須的。但是,有了大的內存緩存,就需要對它高效的管理。特別是有大量查詢并發訪問內存緩存的時候。
Security Manager 安全管理。管理用戶授權和權限認證。
Client manager 客戶端管理。管理客戶端的連接。
Backup manager 備份管理。數據庫備份與恢復。
Recovery manager 數據庫恢復系統。數據庫崩潰后重啟,保證數據庫的一致性。
Monitor manager 監控系統。日志記錄數據庫的活動狀態,并提供功能監控數據庫系統。Administration manager 系統管理。元數據存儲管理(例如表名、表結構)。提供工具管理數據表結構、存儲空間配置等。
Query parser 查詢解析器。SQL編譯,檢查查詢語句的有效性。
Query rewriter 查詢重寫器。SQL前置優化。
Query optimizer 查詢優化器。對SQL語句做性能上的優化(類似C++編譯器優化代碼執行路徑,提升執行效率)。
Query executor 查詢執行器。編譯SQL代碼,執行查詢數據庫操作。
Transaction manager 事務管理。啟動/提交/回滾事務。
Cache manager 緩存管理。在讀取數據之前將數據提前加載到內存;在修改數據之后將數據持久化到磁盤。
Data access manager 數據訪問管理器。操作磁盤上的數據文件。
接下來的章節,我將重點介紹數據庫如果執行一條SQL的查詢操作。通過三部分展開: - the client manager—客戶端管理 - the query manager—查詢管理 - the data manager —數據管理
本文為博主原創文章,未經博主允許不得轉載。其它文章請訪問:http://blog.csdn.net/ylforever
新聞熱點
疑難解答