1. 內(nèi)存數(shù)據(jù)庫(kù)簡(jiǎn)介
1.1 概念
一、什么是內(nèi)存數(shù)據(jù)庫(kù)
傳統(tǒng)的數(shù)據(jù)庫(kù)管理系統(tǒng)把所有數(shù)據(jù)都放在磁盤(pán)上進(jìn)行管理,所以稱(chēng)做磁盤(pán)數(shù)據(jù)庫(kù)(DRDB:Disk-Resident Database)。磁盤(pán)數(shù)據(jù)庫(kù)需要頻繁地訪問(wèn)磁盤(pán)來(lái)進(jìn)行數(shù)據(jù)的操作,由于對(duì)磁盤(pán)讀寫(xiě)數(shù)據(jù)的操作一方面要進(jìn)行磁頭的機(jī)械移動(dòng),另一方面受到系統(tǒng)調(diào)用(通常通過(guò)CPU中斷完成,受到CPU時(shí)鐘周期的制約)時(shí)間的影響,當(dāng)數(shù)據(jù)量很大,操作頻繁且復(fù)雜時(shí),就會(huì)暴露出很多問(wèn)題。
近年來(lái),內(nèi)存容量不斷提高,價(jià)格不斷下跌,操作系統(tǒng)已經(jīng)可以支持更大的地址空間(計(jì)算機(jī)進(jìn)入了64位時(shí)代),同時(shí)對(duì)數(shù)據(jù)庫(kù)系統(tǒng)實(shí)時(shí)響應(yīng)能力要求日益提高,充分利用內(nèi)存技術(shù)提升數(shù)據(jù)庫(kù)性能成為一個(gè)熱點(diǎn)。
在數(shù)據(jù)庫(kù)技術(shù)中,目前主要有兩種方法來(lái)使用大量的內(nèi)存。一種是在傳統(tǒng)的數(shù)據(jù)庫(kù)中,增大緩沖池,將一個(gè)事務(wù)所涉及的數(shù)據(jù)都放在緩沖池中,組織成相應(yīng)的數(shù)據(jù)結(jié)構(gòu)來(lái)進(jìn)行查詢和更新處理,也就是常說(shuō)的共享內(nèi)存技術(shù),這種方法優(yōu)化的主要目標(biāo)是最小化磁盤(pán)訪問(wèn)。另一種就是內(nèi)存數(shù)據(jù)庫(kù)(MMDB:Main Memory Database,也叫主存數(shù)據(jù)庫(kù))技術(shù),就是干脆重新設(shè)計(jì)一種數(shù)據(jù)庫(kù)管理系統(tǒng),對(duì)查詢處理、并發(fā)控制與恢復(fù)的算法和數(shù)據(jù)結(jié)構(gòu)進(jìn)行重新設(shè)計(jì),以更有效地使用CPU周期和內(nèi)存,這種技術(shù)近乎把整個(gè)數(shù)據(jù)庫(kù)放進(jìn)內(nèi)存中,因而會(huì)產(chǎn)生一些根本性的變化。兩種技術(shù)的區(qū)別如下表:

內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)帶來(lái)的優(yōu)越性能不僅僅在于對(duì)內(nèi)存讀寫(xiě)比對(duì)磁盤(pán)讀寫(xiě)快上,更重要的是,從根本上拋棄了磁盤(pán)數(shù)據(jù)管理的許多傳統(tǒng)方式,基于全部數(shù)據(jù)都在內(nèi)存中管理進(jìn)行了新的體系結(jié)構(gòu)的設(shè)計(jì),并且在數(shù)據(jù)緩存、快速算法、并行操作方面也進(jìn)行了相應(yīng)的改進(jìn),從而使數(shù)據(jù)處理速度一般比傳統(tǒng)數(shù)據(jù)庫(kù)的數(shù)據(jù)處理速度快很多,一般都在10倍以上,理想情況甚至可以達(dá)到1000倍。
而使用共享內(nèi)存技術(shù)的實(shí)時(shí)系統(tǒng)和使用內(nèi)存數(shù)據(jù)庫(kù)相比有很多不足,由于優(yōu)化的目標(biāo)仍然集中在最小化磁盤(pán)訪問(wèn)上,很難滿足完整的數(shù)據(jù)庫(kù)管理的要求,設(shè)計(jì)的非標(biāo)準(zhǔn)化和軟件的專(zhuān)用性造成可伸縮性、可用性和系統(tǒng)的效率都非常低,對(duì)于快速部署和簡(jiǎn)化維護(hù)都是不利的。
2. 內(nèi)存數(shù)據(jù)庫(kù)歷史和發(fā)展
一、雛形期
從上個(gè)世紀(jì)60年代末到80年代初。在這個(gè)時(shí)期中,出現(xiàn)了主存數(shù)據(jù)庫(kù)的雛形。1969年IBM公司研制了世界上最早的數(shù)據(jù)庫(kù)管理系統(tǒng)------基于層次模型的數(shù)據(jù)庫(kù)管理系統(tǒng)IMS,并作為商品化軟件投入市場(chǎng)。在設(shè)計(jì)IMS時(shí),IBM考慮到基于內(nèi)存的數(shù)據(jù)管理方法,相應(yīng)推出了IMS/VS Fast Path。Fast Path是一個(gè)支持內(nèi)存駐留數(shù)據(jù)的商業(yè)化數(shù)據(jù)庫(kù),但它同時(shí)也可以很好地支持磁盤(pán)駐留數(shù)據(jù)。在這個(gè)產(chǎn)品中體現(xiàn)了主存數(shù)據(jù)庫(kù)的主要設(shè)計(jì)思想,也就是將需要頻繁訪問(wèn),要求高響應(yīng)速度的數(shù)據(jù)直接存放在物理內(nèi)存中訪問(wèn)和管理。在這個(gè)階段中,包括網(wǎng)狀數(shù)據(jù)庫(kù)、關(guān)系數(shù)據(jù)庫(kù)等其他各種數(shù)據(jù)庫(kù)技術(shù)也都逐漸成型。
二、技術(shù)理論成熟期
1984年,D J DeWitt等人發(fā)表了《主存數(shù)據(jù)庫(kù)系統(tǒng)的實(shí)現(xiàn)技術(shù)》一文。第一次提出了Main Memory Database(主存數(shù)據(jù)庫(kù))的概念。預(yù)言當(dāng)時(shí)異常昂貴的計(jì)算機(jī)主存價(jià)格一定會(huì)下降,用戶有可能將大容量的數(shù)據(jù)庫(kù)全部保存在主存中,提出了AVL樹(shù)、哈希算法、主存數(shù)據(jù)庫(kù)恢復(fù)機(jī)制等主存數(shù)據(jù)庫(kù)技術(shù)的關(guān)鍵理論,為主存數(shù)據(jù)庫(kù)的發(fā)展指出了明確的方向 。
1984年,D J DeWitt等人提出使用非易逝內(nèi)存或預(yù)提交和成組提交技術(shù)作為主存數(shù)據(jù)庫(kù)的提交處理方案,使用指針實(shí)現(xiàn)主存數(shù)據(jù)庫(kù)的存取訪問(wèn)。
1985年,IBM推出了IBM 370上運(yùn)行的OBE主存數(shù)據(jù)庫(kù)
1986年,RB Hagman提出了使用檢查點(diǎn)技術(shù)實(shí)現(xiàn)主存數(shù)據(jù)庫(kù)的恢復(fù)機(jī)制。威斯康星大學(xué)提出了按區(qū)雙向鎖定模式解決主存數(shù)據(jù)庫(kù)中的并發(fā)控制問(wèn)題。并設(shè)計(jì)出MM-DBMS主存數(shù)據(jù)庫(kù)。貝爾實(shí)驗(yàn)室推出了DALI主存數(shù)據(jù)庫(kù)模型。
1987年,ACM SIGMOD會(huì)議中提出了以堆文件(HEAP FILE)作為主存數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。Southern Methodist大學(xué)設(shè)計(jì)出MARS主存數(shù)據(jù)庫(kù)模型。
1988年普林斯頓大學(xué)設(shè)計(jì)出TPK主存數(shù)據(jù)庫(kù)。
1990年普林斯頓大學(xué)又設(shè)計(jì)出System M主存數(shù)據(jù)庫(kù)。
三、產(chǎn)品發(fā)展期和市場(chǎng)成長(zhǎng)期
隨著互聯(lián)網(wǎng)的發(fā)展,越來(lái)越多的網(wǎng)絡(luò)應(yīng)用系統(tǒng)需要能夠支持大用戶量并發(fā)訪問(wèn)、高響應(yīng)速度的的數(shù)據(jù)庫(kù)系統(tǒng),主存數(shù)據(jù)庫(kù)市場(chǎng)成熟
半導(dǎo)體技術(shù)快速發(fā)展,半導(dǎo)體內(nèi)存大規(guī)模生產(chǎn),動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)的容量越來(lái)越大,而價(jià)格越來(lái)越低,這無(wú)疑為計(jì)算機(jī)內(nèi)存的不斷擴(kuò)大提供了硬件基礎(chǔ),使得主存數(shù)據(jù)庫(kù)的技術(shù)可行性逐步成熟
1994年美國(guó)OSE公司推出了第一個(gè)商業(yè)化的,開(kāi)始實(shí)際應(yīng)用的主存數(shù)據(jù)庫(kù)產(chǎn)品Polyhedra
1998年德國(guó)SoftwareAG推出了Tamino Database。
1999年日本UBIT會(huì)社開(kāi)發(fā)出XDB主存數(shù)據(jù)庫(kù)產(chǎn)品。韓國(guó)Altibase推出Altibase
2000年奧地利的QuiLogic公司推出了SQL-IMDB
2001年美國(guó)McObject推出eXtremeDB。加拿大Empress公司推出EmpressDB
四、幾種主存技術(shù)應(yīng)用的比較
第一代:用戶定制的主存數(shù)據(jù)庫(kù)。通過(guò)應(yīng)用程序來(lái)管理內(nèi)存和數(shù)據(jù);不支持SQL語(yǔ)句, 不提供本地存儲(chǔ), 沒(méi)有數(shù)據(jù)庫(kù)恢復(fù)技術(shù);性能好但很難維護(hù)和在別的應(yīng)用中不能使用;應(yīng)用在實(shí)時(shí)領(lǐng)域比如工廠自動(dòng)化生產(chǎn)。
第二代:簡(jiǎn)單功能的內(nèi)存數(shù)據(jù)庫(kù)。能夠快速處理簡(jiǎn)單的查詢;支持部分的 SQL語(yǔ)句和簡(jiǎn)單的恢復(fù)技術(shù);主要目的是能夠快速處理大量事務(wù);針對(duì)簡(jiǎn)單事務(wù)處理領(lǐng)域,尤其是交換機(jī), 移動(dòng)通信等。
第三代:通用的主存數(shù)據(jù)庫(kù)。針對(duì)傳統(tǒng)的商業(yè)關(guān)系型數(shù)據(jù)庫(kù)領(lǐng)域,能夠提供更高的性能、通用性以及穩(wěn)定性;提供不同的接口來(lái)處理復(fù)雜的SQL語(yǔ)句和滿足不同的應(yīng)用領(lǐng)域;可以應(yīng)用在計(jì)費(fèi)、電子商務(wù)、在線安全領(lǐng)域,幾乎包括磁盤(pán)數(shù)據(jù)庫(kù)的所有應(yīng)用領(lǐng)域。
五、目前幾種常見(jiàn)的通用內(nèi)存數(shù)據(jù)庫(kù)
eXtremeDB:eXtremeDB實(shí)時(shí)數(shù)據(jù)庫(kù)是McObject公司的一款特別為實(shí)時(shí)與嵌入式系統(tǒng)數(shù)據(jù)管理而設(shè)計(jì)的數(shù)據(jù)庫(kù),只有50K到130K的開(kāi)銷(xiāo),速度達(dá)到微秒級(jí)。eXtremeDB完全駐留在主內(nèi)存中,不使用文件系統(tǒng)(包括內(nèi)存盤(pán))。eXtremeDB采用了新的磁盤(pán)融合技術(shù),將內(nèi)存拓展到磁盤(pán),將磁盤(pán)當(dāng)做虛擬內(nèi)存來(lái)用,實(shí)時(shí)性能保持微秒級(jí)的同時(shí),數(shù)據(jù)管理量在32BIT下能達(dá)到20G。
Oracle TimesTen:Oracle TimesTen是Oracle從TimesTen公司收購(gòu)的一個(gè)內(nèi)存優(yōu)化的關(guān)系數(shù)據(jù)庫(kù),它為應(yīng)用程序提供了實(shí)時(shí)企業(yè)和行業(yè)(例如電信、資本市場(chǎng)和國(guó)防)所需的即時(shí)響應(yīng)性和非常高的吞吐量。Oracle TimesTen可作為高速緩存或嵌入式數(shù)據(jù)庫(kù)被部署在應(yīng)用程序?qū)又?,它利用?biāo)準(zhǔn)的 SQL 接口對(duì)完全位于物理內(nèi)存中的數(shù)據(jù)存儲(chǔ)區(qū)進(jìn)行操作。
SolidDB:Solid Information Technology 成立于 1992 年,全球總部位于加州Cupertino,
Solid數(shù)據(jù)管理平臺(tái)將基于內(nèi)存和磁盤(pán)的全事務(wù)處理數(shù)據(jù)庫(kù)引擎、載體級(jí)高可用性及強(qiáng)大的數(shù)據(jù)復(fù)制功能緊密地融為一體。
Altibase:ALTIBASE公司從1999年就一直致力于內(nèi)存數(shù)據(jù)庫(kù)軟件和其應(yīng)用的開(kāi)發(fā),提供高性能和高可用性的軟件解決方案。特別適合通信、網(wǎng)上銀行、證券交易、實(shí)時(shí)應(yīng)用和嵌入式系統(tǒng)領(lǐng)域。目前占據(jù)80%以上內(nèi)存數(shù)據(jù)庫(kù)市場(chǎng),可以說(shuō)是當(dāng)今數(shù)據(jù)庫(kù)軟件技術(shù)的領(lǐng)導(dǎo)者。目前Altibase在國(guó)內(nèi)成功案例也比較多,尤其是在電信行業(yè),已經(jīng)得到了廣泛認(rèn)可。