在最基礎(chǔ)的層面上折晦,數(shù)據(jù)庫需要做兩件事:當(dāng)您給它一些數(shù)據(jù)時,它應(yīng)該存儲數(shù)據(jù)风喇,當(dāng)您稍后再問它時响驴,它應(yīng)該將數(shù)據(jù)返回給您豁鲤。
在第2章中琳骡,我們討論了數(shù)據(jù)模型和查詢語言。即應(yīng)用程序開發(fā)人員向數(shù)據(jù)庫提供數(shù)據(jù)炫狱,以及可以再次請求它的機(jī)制视译。在這一章中鄙早,我們從數(shù)據(jù)庫的角度討論同樣的問題:我們?nèi)绾未鎯ξ覀兯峁┑臄?shù)據(jù)限番,以及當(dāng)數(shù)據(jù)庫被請求時如何再次找到它。
作為一個應(yīng)用程序開發(fā)人員躯舔,為什么要關(guān)心數(shù)據(jù)庫如何在內(nèi)部處理存儲和檢索呢?你可能不會從頭開始實現(xiàn)自己的存儲引擎豺妓,但是確實需要從可用的許多引擎中選擇適合你應(yīng)用程序的存儲引擎。為了優(yōu)化存儲引擎在你的平臺上良好運行白嘁,你需要對存儲引擎在引擎蓋下做什么有一個大致的了解絮缅。
特別地,為事務(wù)性優(yōu)化的存儲引擎和針對分析優(yōu)化的存儲引擎之間有很大的區(qū)別彭谁。我們稍后將在“事務(wù)處理或分析”中探索這種區(qū)別吸奴。
首先我們將從這一章開始,討論你可能熟悉的一些數(shù)據(jù)庫中使用的存儲引擎:傳統(tǒng)的關(guān)系數(shù)據(jù)庫,以及大多數(shù)所謂的NoSQL數(shù)據(jù)庫则奥。我們將研究兩個存儲引擎:日志結(jié)構(gòu)的存儲引擎考润,以及面向頁面的存儲引擎额划,如b樹。