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

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