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

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