程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 走近數據庫前沿技術——集群

走近數據庫前沿技術——集群

編輯:DB2教程

用來保存計算最終結果的數據庫是整個信息系統的重要組成部分,技術也相對成熟。然而,對於所有數據庫而言,除了記錄正確的處理結果之外,也面臨著一些挑戰:如何提高處理速度,數據可用性、數據安全性和數據集可擴性。將多個數據庫聯在一起組成數據庫集群來達到上述目標應該說是一個很自然的想法。

集群(Cluster)技術是使用特定的連接方式,將價格相對較低的硬件設備結合起來,同時也能提供高性能相當的任務處理能力。

本文試圖對當前主要的數據庫集群用到的具體技術和市場上的主流產品進行分析並作點評,從而為讀者提供一個數據庫集群的評價參考。

下面討論的數據庫集群技術分屬兩類體系:基於數據庫引擎的集群技術和基於數據庫網關(中間件)的集群技術。

走近數據庫前沿技術——集群

基於數據庫引擎的集群技術(共享磁盤或非共享磁盤)

走近數據庫前沿技術——集群

基於數據庫網關(中間件)的集群技術(不共享磁盤)

關鍵技術

在復雜的數據庫集群技術之間做比較,其實就是比較它所包含的各項子技術性能和它們之間的協調運作能力,下面的文字將介紹數據庫集群最需要得到重視的核心技術,同時也關注到了一些技術細節。

提高處理速度的四種辦法

提高磁盤速度:主要思想是提高磁盤的並發度。盡管實現方法各不相同,但是它們最後的目的都是提供一個邏輯數據庫的存儲映象。

【點評】系統為了提高磁盤訪問速度,建立一個虛擬的涵蓋所有數據“大”數據庫,而不用去考慮數據的實際物理磁盤存放位置。

分散數據的存放:利用多個物理服務器來存放數據集的不同部分,使得不同的服務器進行並行計算成為可能。

Oracle RAC是共享磁盤的體系結構,用戶只需簡單地增加一個服務器節點,RAC就能自動地將這節點加入到它的集群服務中去,RAC會自動地將數據分配到這節點上,並且會將接下來的數據庫訪問自動分布到合適的物理服務器上,而不用修改應用程序;UDB是非共享磁盤的體系結構,需要手工修改數據分區,MSCS和ASE也是同樣情況。ICX是一種基於中間件的數據庫集群技術,對客戶端和數據庫服務器都是透明的。可以用來集群幾個數據庫集群。

【點評】系統通過化整為零的策略,將數據表格分散到多個服務器或者每個服務器分管幾個內容不同的表格,這樣做的目的在於通過多服務器間並行運算以提高訪問速度。

對稱多處理器系統:

利用多處理機硬件技術來提高數據庫的處理速度。

所有基於數據庫引擎的集群都支持這個技術。

【點評】將多CPU處理器進行合理調度,來同時處理不同的訪問要求,但這種技術在數據庫上的應用的實際收益是很有限的。

交易處理負載均衡:在保持數據集內容同步的前提下,將只讀操作分布到多個獨立的服務器上運行。因為絕大多數的數據庫操作是浏覽和查詢,如果我們能擁有多個內容同步的數據庫服務器,交易負載均衡就具有最大的潛力(可以遠遠大於上面敘述的最多達四個處理器的對稱多處理器系統)來提高數據庫的處理速度,同時會具有非常高的數據可用性。

所有基於數據庫引擎的集群系統都只支持一個邏輯數據庫映象和一個邏輯或物理的備份。這個備份的主要目的是預防數據災難。因此,備份裡的數據只能通過復制機制來更新,應用程序是不能直接更新它的。利用備份數據進行交易負載均衡只適用於一些非常有限的應用,例如報表統計、數據挖掘以及其它非關鍵業務的應用。

【點評】負載平衡算是一項“老”技術了。但將性能提高到最大也是集群設計所追求的終極目標。傳統意義上,利用備份數據進行交易負載均衡只適用於一些非常有限的應用。

上述所有技術在實際部署系統的時候可以混合使用以達到最佳效果。

提高可用性的四種方法

硬件級冗余:讓多處理機同時執行同樣的任務用以屏蔽瞬時和永久的硬件錯誤。有兩種實現方法:構造特殊的冗余處理機和使用多個獨立的數據庫服務器。

基於數據庫的集群系統都是用多個獨立的數據庫服務器來實現一個邏輯數據庫,在任意瞬間,每台處理器運行的都是不同的任務。這種系統可以屏蔽單個或多個服務器的損壞,但是因為沒有處理的冗余度,每次恢復的時間比較長。

【點評】傳統意義上,硬件越貴,性能越高,但往往事與願違。想通過追加和升級硬件設備來改善硬件級的冗余,要進行詳細的需求分析和論證。

通訊鏈路級冗余:冗余的通訊鏈路可以屏蔽瞬時和永久的通訊鏈路級的錯誤。

基於數據庫引擎的集群系統有兩種結構:共享磁盤和獨立磁盤。RAC, MSCS 可以認為是共享磁盤的集群系統。UDB和ASE 是獨立磁盤的集群系統。共享磁盤集群系統的通訊的冗余度最小。

【點評】通訊鏈路級的冗余具有容錯功能。

軟件級冗余:由於現代操作系統和數據庫引擎的高度並發性,由競爭條件、死鎖、以及時間相關引發的錯誤占據了非正常停機服務的絕大多數原因。采用多個冗余的運行數據庫進程能屏蔽瞬時和永久的軟件錯誤。基於數據庫引擎的集群系統都用多個處理器來實現一個邏輯數據庫,它們只能提供部分軟件冗余,因為每一瞬間每個處理器執行的都是不同的任務。

【點評】改善軟件設計來提高冗余性能和屏蔽軟件級錯誤是每個技術開發商的夢想。傳統的集群系統只能提供部分軟件冗余。

數據冗余:

1. 被動更新數據集:所有目前的數據復制技術(同步或異步),例如磁盤鏡像、數據庫文件復制以及數據庫廠商自帶的數據庫備份工具都只能產生被動復制數據集。它一般只用於災難恢復。

【點評】大多數應用都是采用被動更新數據集的方法。這種方法容災能力差,資源占用多,已面臨淘汰和革新。

2. 主動更新數據集:這種數據集需要一台或多台備份數據庫服務器來管理,它可用於報表生成,數據挖掘,災難恢復甚至低質量負載均衡。分同步和異步兩種。

異步主動復制數據集:先把事務處理交給主服務器來完成,然後事務處理再被串行地交給備份服務器以執行同樣操作來保證數據一致性。所有的商用數據庫都支持異步主動復制技術。

同步主動復制數據集:要求所有並發事務處理在所有數據庫服務器上同時完成。直接好處就是解決了隊列管理問題,同時通過負載均衡實現更高性能和可用性。RAC, UDB, MSCS 和 ASE是用完全串行化並結合兩階段提交協議來實現的,設計目標就是為了獲得一份可用於快速災難恢復的數據集。

【點評】主動更新數據集是目前比較先進的數據冗余方法。專業人員還可以進行更底層的技術細節比較。底層技術的差異直接影響著一些重要指標。

提高安全和數據集可擴性的技術

在提高數據庫安全性和數據集可擴性這兩方面,可以創新的空間是很小的。數據庫最常見的安全辦法是口令保護,要麼是分布式的,要麼是集中式的。在數據庫前面增加防火牆會增加額外的延遲,因此,盡管許多安全侵犯事件是來自於公司內部,但是數據庫防火牆還是很少被采用。如果數據庫集群技術是基於中間件技術實現的,就有可能在不增加額外延遲的情況下,在數據經過的路徑上實現防火牆功能。數據庫數據集的可擴性只能通過將數據分布到多個獨立的物理服務器上來實現。

主流產品

在數據庫集群產品方面,其中主要包括基於數據庫引擎的集群技術的Oracle RAC、Microsoft MSCS、IBM DB2 UDB、Sybase ASE,以及基於數據庫網關(中間件)的集群技術的ICX-UDS等產品。

Oracle RAC

Oracle RAC 支持 Oracle 數據庫在集群上運行的所有類型的主流商業應用程序。這包括流行的封裝產品,如 SAP、PeopleSoft 和 Oracle E-Business Suite 等,以及自主研發的應用程序,其中包括 OLTP 和 DSS,以及 Oracle 有效支持混合 OLTP/DSS 環境的獨有能力。Oracle 是唯一提供具備這一功能的開放系統數據庫的廠商。 Oracle RAC 運行於集群之上,為 Oracle 數據庫提供了最高級別的可用性、可伸縮性和低成本計算能力。如果集群內的一個節點發生故障,Oracle 將可以繼續在其余的節點上運行。如果需要更高的處理能力,新的節點可輕松添加至集群。為了保持低成本,即使最高端的系統也可以從采用標准化商用組件的小型低成本集群開始逐步構建而成。

Oracle 的主要創新是一項稱為高速緩存合並的技術,它最初是針對 Oracle9i 真正應用集群開發的。高速緩存合並使得集群中的節點可以通過高速集群互聯高效地同步其內存高速緩存,從而最大限度地低降低磁盤 I/O。高速緩存最重要的優勢在於它能夠使集群中所有節點的磁盤共享對所有數據的訪問。數據無需在節點間進行分區。Oracle RAC 支持企業網格。Oracle RAC 的高速緩存合並技術提供了最高等級的可用性和可伸縮性。Oracle RAC能顯著降低了運營成本,增強了靈活性,從而賦予了系統更卓越的適應性、前瞻性和靈活性。動態提供節點、存儲器、CPU 和內存可以在實現所需服務級別的同時,通過提高的利用率不斷降低成本。

Oracle RAC采用了“sharing everything”的實現模式,通過CPU共享和存儲設備共享來實現多節點之間的無縫集群,用戶提交的每一項任務被自動分配給集群中的多台機器執行,用戶不必通過冗余的硬件來滿足高可靠性要求。另一方面,RAC可以實現CPU的共享,即使普通服務器組成的集群也能實現過去只有大型主機才能提供的高性能。

Microsoft MSCS

數年以來,Microsoft一直致力於對自身服務器解決方案的伸縮能力、可用性與可靠性進行擴展。最初代號為Wolfpack且先後被稱為Microsoft集群服務器與Microsoft集群服務的MSCS是Microsoft在NT集群技術領域中的首次重拳出擊,它是公認的最佳Microsoft集群解決方案。在MSCS群集中,MSCS軟件最多可以同四台運行在高速網絡上的物理計算機建立連接。通常情況下,群集中的計算機能夠按照“活動--活動”方式共享相同的存儲子系統與功能,這意味著所有集群計算機(節點)均可主動通過共享負載的方式協同完成工作,並在某個節點出現故障時分擔它的工作。MSCS的主要用途是通過自身提供的容錯能力提高應用程序可用性。容錯能力是指將相關處理過程從某個節點上的故障應用程序移植到集群中其它健康節點上的集群功能。當故障應用程序得到恢復後,集群應當能夠對原先的集群節點實現“故障返回”。MSCS能夠在不丟失任何與故障應用程序相關數據的前提下對集群上所運行的應用程序進行故障恢復與故障返回管理,並且能夠在故障恢復過程中維護用戶及應用程序狀態。這種類型的集群功能被稱作有狀態集群功能。MSCS同時還允許用戶在應用程序升級過程中繼續進行工作。您可以采取滾動升級方式(例如每次在一個集群節點上升級應用程序並確保其它節點上的應用程序繼續處於可用狀態)而不必在升級過程中停止使用應用程序。

SQL Server 2005是微軟的下一代數據管理和分析解決方案,給企業級應用數據和分析程序帶來更好的安全性、穩定性和可靠性,更易於創建、部署和管理。它憑借針對故障轉移群集機制的支持能力,得以增強的多實例支持能力以及分析服務對象與數據備份及恢復能力,分析服務的可用性得到了提高。它提供了諸如表分區、快照隔離、64位支持等方面的高級可伸縮性功能,使用戶能輕松構建和部署關鍵應用。表和索引的分區功能顯著增強了對大型數據庫的查詢性能。

走近數據庫前沿技術——集群

利用Windows 2000 MSCS實現的4節點集群

性能指標

這部分將介紹集群系統的細節技術指標。在做系統規劃時,用戶就可去掉一些應用中不太重要的指標,或賦予這些指標以不同的權重,從而進行專業的技術性能比較,選擇最適合自己的數據庫集群系統。

處理速度

磁盤技術:所有集群系統都能很好地應用磁盤技術,但是由於DM,FM會對磁盤系統帶來傳輸速度的負面影響,因此這方面它們相對欠缺。

數據分割:所有基於數據庫引擎的集群系統都有很好數據分割能力。

SMP:所有基於數據庫引擎的集群系統的SMP性能指標都比較接近。

負載均衡:一般的數據庫引擎的集群系統由於使用了備份的數據集,因此只能支持有限的負載均衡。這一指標不同產品之間有差異。

數據可用性

處理器和軟件冗余:只有部分集群系統支持該功能。

通訊鏈路冗余:一般來說,共享磁盤的集群系統通訊鏈路冗余指標較低,獨立磁盤的集群系統指標較高。

數據冗余:

主動異步復制:除了磁盤和文件鏡像外,其他集群系統支持該功能。

主動同步復制:所有集群系統支持該功能,細節指標略有不同。

被動異步復制:所有集群系統該性能指標都比較接近。

被動同步更新:所有集群系統該性能指標都比較接近。

通過廣域網的復制技術:

遠程主動異步復制:所有的集群系統都支持這種復制技術,只不過對隊列的管理能力有所不同。DM,FM和RAID的此性能相對較低。RAID不支持遠程復制功能。

遠程主動同步復制:ICX在這方面做的比較好。

遠程被動異步復制:DM 和 FM支持這種類型的復制,因為DM和FM對集群是透明的,是在集群系統的下一層工作的,所有的集群系統都可以利用它們提供的功能。

遠程被動同步復制:DM和FM支持這種類型的復制,因為這種復制方式只在距離很近的時候才能使用(使用雙模光纖,半徑五英裡)。同樣地,因為DM和FM對集群是透明的, 所有的集群系統都可以利用它們提供的功能, 如果部署的話,所有的集群系統都是類似的。

安全性

口令:這是所有集群系統的基本性能。分布式或集中式的口令保護基本上保證了數據的安全。

數據庫防火牆:大多數數據庫集群系統得數據庫防火牆很少被采用,而ICX則采用在數據經過的路徑上實現防火牆功能。

數據集的可擴性

數據分區:所有基於數據庫引擎的集群系統都具備數據分區以保證數據集的可擴展。

數據分區的可用性:所有集群系統該性能指標比較接近。

集群管理

共享磁盤的集群系統,比如RAC、MSCS,它們的管理比較方便,其中RAC的服務更多。但是,由於此種系統中的每一單獨的服務器需要特殊處理,和獨立磁盤的集群系統比較,就容易管理多了(雖然進行初始化和修改配置的時候也不那麼容易),但它們都要求應用程序對集群不透明,而且配置,修改也比較麻煩。

獨立磁盤的集群系統象 UDB、ASE此性能相對稍低,因為用的都是非共享磁盤,所以管理相對繁瑣。

ICX在易管理性(初始配置和將來的修改)方面和獨立磁盤集群系統的性能相當,但是在對底層數據管理復雜性方面做得比較好。在對數據庫引擎和數據進行底層修復的時候任務需要直接到每台數據庫處理器上去做。

那些磁盤工具,即DM、FM和RAID,它們對集群是透明的。管理相對簡單得多。

應用透明度

因為在錯誤回復和分區方面對應用程序不透明以及它們對應用程序都有些特殊的要求,基於數據庫引擎的RAC、MSCS、UDB、ASE和ICX在這方面都有待提高的地方。而DM、FM和RAID它們對應用程序可以說是完全透明的。

IBM DB2 UDB

DB2 UDB大量自動或自我管理功能可使管理員能夠節省更多時間來集中精力考慮驅動業務價值的問題,甚至可以消除較小的實施項目對專職管理員的需求。

UDB的優勢體現在DB2的開放無界:支持Unix, Linux 以及Windows等主流操作系統;支持各種開發語言和訪問接口;同時具有良好的數據安全性和穩定性。DB2 V8.2的高可用性災備技術,可在極短時間內使關鍵應用得到恢復。利用DB2數據分區部件(DPF)實現橫向擴展,可以支持多達1000台服務器組成的龐大數據庫群集,為構建企業級數據倉庫提供堅實的技術基礎。利用DB2的數據分區部件以及DB2信息集成器(DB2 II)技術,數據庫操作可綜合利用網格中的每台服務器的運算能力,實現真正意義上的網格運算。

UDB V8.2應用更多的創新技術,Design Advisor可以幫助 DBA 制定全面的數據庫設計決策,包括集成復雜的功能劃分、物化查詢表,大大縮短部署時間。自動生成統計信息概要代表了來自 IBM LEO研發項目的首次部署。自主對象維護特性可自動執行基於策略的管理和維護功能,如表重構、統計信息收集和數據庫備份。高可用性災難恢復和客戶機重路由特性實現了具備隨選能力的企業所需的24*7信息可用性和恢復力。此外,DB2 UDB 提供與 Java/Eclipse 和 Microsoft .Net IDE的深入集成或插件。

走近數據庫前沿技術——集群

DB2 UDB結構拓撲圖

Sybase ASE

ASE性能的提高是建立在虛擬服務器架構上的,這是 Sybase 獨有的體系結構。當前的ASE版本是ASE15。與操作系統和相關軟件保持獨立讓ASE15可以更智能化地進行系統自我調優。VSA只需要很少的內存資源和內部交換開銷,所以ASE15可以管理大量的聯機用戶。能夠使ASE提高性能並控制成本的最主要原因是它采用了專利技術的、自調整的優化器和查詢引擎。它可以智能地調整復雜的查詢操作並忽略那些未包含相關信息的分區上的數據。ASE15還通過一系列用來管理和診斷數據庫服務器的新特性來降低運營成本。

ASE15 擁有高可靠性和極低的運行風險。個人數據的安全性是ASE特別關注的領域,使用了一種無需修改應用的獨特加密系統。當應用和安全軟件進行連接時將降低實施成本並避免產生新的安全漏洞。ASE15 還通過一種簡單、直接和可編程的腳本語言來方便進行加密和解密。在解決意外停機問題時,ASE15 在其已證實的可靠性和高系統利用率的基礎上,增加了許多顯著的功能來增強系統的可用性和災難恢復過程。新的存儲引擎支持四種數據分區方式,在不同的物理設備上進行不同的分區操作。能幫助數據庫管理員迅速地建立冗余災難恢復節點並在異構的數據平台上同步數據庫。

ASE15系統新的查詢和存儲引擎被設計用於支持下一代網格計算和集群技術。它結合了充分利用數據分區技術的查詢處理機制和適用於解決集群問題的優化器技術。同時ASE15為事件驅動的企業提供了一個絕好的數據庫平台。與web services 和 XML的架構將減少系統內部的相互依賴性,並為應用開發提供更大的靈活性。

ICX-UDS

ICX-UDS不受基於數據庫引擎的集群技術限制,可以支持不同的數據庫。

它類似通常的代理服務器。把ICX放置在關鍵的網絡路徑上,監聽數據庫系統流量。ICX網關將自動過濾出無狀態的查詢訪問,並將負載均衡到所有服務器上。在這裡,網關就象一個在線“編譯器”,它將所有對數據庫的更新操作發送到所有數據庫上執行,而將無狀態的查詢操作只發送到其中某一數據庫服務器上。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved