數(shù)據(jù)庫做為我們?nèi)粘i_發(fā)的一個組件或者說基礎服務,也許有人認為把它當個黑盒直接用就好,費那事兒干嘛。確實數(shù)據(jù)庫的設計也做到了讓我們不了解也能干活。但實際開發(fā)中往往會遇到性能退化、遇到bug,遇到服務問題等等,對數(shù)據(jù)庫了解一些,就能更快的恢復,減少風險。
另外,作為經(jīng)過多年發(fā)展,近乎成熟的產(chǎn)品,數(shù)據(jù)庫里有不少有意思的地方。這里面對于設計一個數(shù)據(jù)庫,一個存儲引擎有大量的工作,以及各種取舍與權衡。比如最容易想到的,寫入的時候如果順序?qū)?,那?shù)據(jù)插入效率更快,但如果是按某個順序來檢索,就必須得查出來再重新排序。比如數(shù)據(jù)怎樣序列化,協(xié)議怎樣組織,索引是怎樣工作的,查詢分析器、執(zhí)行計劃這些是怎樣工作的,怎樣挑選執(zhí)行計劃從而來保證查詢的高效;另外數(shù)據(jù)庫里數(shù)據(jù)是怎樣組織來保證數(shù)據(jù)的存儲、壓縮來優(yōu)化空間占用,又是怎樣提升磁盤到內(nèi)存中的訪問速度,怎樣做垃圾回收的......
最近看了一些數(shù)據(jù)庫相關的書、文章等內(nèi)容感覺不錯,后面打算根據(jù)自己的理解寫一寫,也會選一些優(yōu)質(zhì)的英文文章翻譯。
今天是翻譯的第一篇。
數(shù)據(jù)庫是什么?
概括來講,數(shù)據(jù)庫是一系列可以方便的訪問和修改的數(shù)據(jù)的集合。
所有數(shù)據(jù)庫管理系統(tǒng)的主要工作都是可靠的存儲數(shù)據(jù)并使其對用戶可用。
甚至說簡單的一堆文件都可以做到輕松訪問和修改這一點。實際上,像SQLite這類簡單的數(shù)據(jù)庫也確實僅是一堆文件。但是,SQLite 它是一些經(jīng)過精心設計的文件,因為它允許執(zhí)行這些操作:
通過事務來保證數(shù)據(jù)安全和一致
可以快速處理數(shù)百萬量級的數(shù)據(jù)
概括來看,一個數(shù)據(jù)庫可以看成以下圖這些部分組成:
在很多書籍或論文里,對于數(shù)據(jù)庫的描述都有自己的方式。比如『數(shù)據(jù)庫技術內(nèi)幕』一書組件插圖是這樣的:
所以不用太關注我們是怎樣組織這些組成部分或者太關注處理流程怎樣命名,因為我們做了一些取舍以適合這篇文章的編寫。你需要重點關注的是這些不同的組成部分。
總體理解就是將數(shù)據(jù)庫可以劃分成多個相互交互組件。
核心組件
流程管理器:多數(shù)數(shù)據(jù)庫都有一個需要管理的「池」,用來組織流程、線程等。甚至,為了取得納秒級等極致性能,一些現(xiàn)代的數(shù)據(jù)庫會使用其自己的線程,而不再是基于操作系統(tǒng)的線程。
網(wǎng)絡管理器:網(wǎng)絡的 I/O 一直是很重要的部分,特別是對分布式數(shù)據(jù)庫來說。這也是為什么一些數(shù)據(jù)庫實現(xiàn)自己的網(wǎng)絡管理器的原因。
文件系統(tǒng)管理器:數(shù)據(jù)庫遇到第一個瓶頸是磁盤 I/O。有一個能夠完美處理操作系統(tǒng)文件系統(tǒng)甚至替換它的文件系統(tǒng)管理器相當重要。
內(nèi)存管理器:為了避免磁盤I/O帶來的影響,需要大量的內(nèi)存。但是當你需要管理大量的內(nèi)存的時候,就會需要一個高效的內(nèi)存管理器。特別是你有多個查詢同時在用內(nèi)存查詢的時候。
安全管理器:用于管理用戶的身份驗證和授權
客戶端管理器:用于管理客戶端的連接
工具
備份管理器:用來備份和還原數(shù)據(jù)庫
恢復管理器:用來在數(shù)據(jù)庫崩潰之后,以一致的狀態(tài)來重新啟動數(shù)據(jù)庫
監(jiān)控管理器:用來記錄數(shù)據(jù)庫的活動日志并提供監(jiān)控數(shù)據(jù)
「管理」管理器:提供工具來管理數(shù)據(jù)庫、表空間、模式,并管理像表的名稱、結(jié)構等數(shù)據(jù)庫的元數(shù)據(jù)
查詢管理器
查詢解析器:檢查查詢是否合法,像SQL語句有沒有詞法、語法錯誤這種
查詢重寫器:預優(yōu)化查詢
查詢優(yōu)化器:優(yōu)化查詢,讓查詢可以更高效的執(zhí)行
查詢執(zhí)行器:編譯和執(zhí)行查詢
數(shù)據(jù)管理器
事務管理器:處理事務
緩存管理器:和我們常用緩存一樣理解,在使用前先把他們放到內(nèi)存,在數(shù)據(jù)寫到磁盤前也放到內(nèi)存
數(shù)據(jù)訪問管理器:訪問磁盤上的數(shù)據(jù)
上一篇:VB 中的dim是什么意思?
責任編輯: