• <acronym id="danlv"><form id="danlv"></form></acronym>
  • <dd id="danlv"><rt id="danlv"></rt></dd>
      <var id="danlv"><rt id="danlv"><big id="danlv"></big></rt></var>
      1. <code id="danlv"><ol id="danlv"></ol></code>
        <var id="danlv"><rt id="danlv"></rt></var>
          1. <code id="danlv"></code>
            返回首頁
            當前位置: 主頁 > 網絡編程 > .Net實例教程 >

            主流數據庫集群技術深入探討

            時間:2013-08-26 00:27來源:知行網www.n1979.com 編輯:麥田守望者

            用來保存計算最終結果的數據庫是整個信息系統的重要組成部分,技術也相對成熟。然而,對于所有數據庫而言, 除了記錄正確的處理結果之外,也面臨著一些挑戰:如何提高處理速度,數據可用性、數據安全性和數據集可擴性。將多個數據庫聯在一起組成數據庫集群來達到上 述目標應該說是一個很自然的想法。
            集群(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同時還允許用戶在應用程序升級過程中繼續進行工作。您可以采取滾動升級方式(例如每次在一個集群節點上升級應用程序 并確保其它節點上的應用程序繼續處于可用狀態)而不必在升級過程中停止使用應用程序。

            ------分隔線----------------------------
            標簽(Tag):數據庫集群技術
            ------分隔線----------------------------
            推薦內容
            猜你感興趣
            日韩在线av免费视久久