DBTwin

資料庫擴展器DBTwin 批處理也是資料庫系統中的一個重要概念,DBTwin 顯著提升資料庫系統的性能–DBTwin

1.當前資料庫用戶面臨的問題

隨著資訊時代的發展,公司和企業的運作越來越依賴於計算機系統。大量有關企業生產、銷售的數據維繫著企業的生存,是企業珍貴的無形資產。這些數據一旦因為存儲系統遭受到失竊、斷電或不可避免的自然災害,造成大量丟失,將會給企業帶來重大的經濟損失。
根據Gartner的調查數據,在經歷大型災難事件而導致系統停運的公司中,有五分之二左右的公司再也沒有恢復運營,剩下的公司中也有接近三分之一在兩年內破產了。而由於資料庫的故障導致的重大事故確是時有發生的,讓我們來看幾個實例:
實例1:2005年12月5日,國內某著名網路遊戲公司的資料庫伺服器出現嚴重宕機事故,造成眾多玩家數據丟失並蒙受經濟損失
實例2:2005年6月9日某證券公司股票交易系統的資料庫出現故障,股票無法正常買賣,迫使股民望“紅”興嘆。
實例3:2002年7月23日國內某機場資料庫系統宕機,導致6000名旅客長時間滯留機場。
實例4:2000年國內某銀行的支付系統突然當機,給廣大用戶造成極大的損失和不便。
以上發生的這些事件都是與企業資料庫系統相關的故障。
另外,幾乎每個數據庫客戶都或多或少地存在數據庫性能問題,當然資料庫性能問題涉及很多方面,其中,能否採用“集群”的方法來提高性能,我們公司研究的重點。
概括來講,當前資料庫系統已經成為了企業信息系統的瓶頸,究其原因,各廠家的解決方案無外乎在下列三大方面無法取得同步的進展:
1)資料庫數據可靠性
2)資料庫系統性能
3) 系統服務的可用性
當前幾乎所有的資料庫系統解決方案,都無法的象真正的集群系統那樣,在上述三方面同時具有良好的可伸縮性,具體來講,當前資料庫系統存在下列各種各樣的問題:
1. 企業只有一份實時生產數據集,一旦主資料庫系統發生故障,將導致業務中斷,數據恢復很麻煩,甚至丟失部分數據。
2. 目前的實時數據備份採用主備機串列複製數據的方式,該方式延長了業務處理的時間,降低了系統的工作效率,增大了系統出錯幾率。
3. 在實際的工作中,資料庫系統宕機事件時有發生,無法完全實現7X24小時不停機服務
4. 在實行異步數據備份的資料庫系統中,備份資料庫的資源被極大地浪費了
5. 現有資料庫的升級方式多為向上擴展方式,即:伺服器—〉小型機—〉大型機的升級方式,既不經濟,又缺乏伸縮性。
資料庫系統屬於磁碟密集型操作,現有的資料庫系統解決方案在應對大規模、頻繁訪問時(如電子交易網站等),存在I/O瓶頸,

2.當前市場上存在的針對資料庫的解決方案

由於“集群”概念的廣為人知,因此,不少公司推出了針對資料庫的“集群”解決方案。但是,我們進行仔細的甄別之後,發現當前市場上存在的,除我們的DBTwin資料庫集群解決方案之外,主要是下面三類產品之一或者是它們的適當組合。
基於串列複製技術串列複製技術,本來是用於數據複製和數據備份的,離人們熟悉的“資料庫集群”的概念有一定的距離。但是由於計算機軟硬體技術和網路通訊技術的快速發展,使得利用這種概念和技術構成的“資料庫集群”有了一定的可行性。此類集群,又可以分兩類:
串列異步複製

資料庫客戶
主資料庫
備資料庫
日誌複製

圖1. 日誌複製示意圖
此種方式是異步串列複製或日誌拷貝(Log Shipping)。 主資料庫完成事務處理後,生成事務處理日誌,日誌記錄通過FIFO佇列,進入備份資料庫處理,從而得到備份數據。此種方式的缺陷在於:
日誌性能問題:在實際的套用場景中,經常發現資料庫用戶為了資料庫性能而關閉了事務日誌功能,從而導致此方法的不可用。也就是說,想要採用此方法構建一個“資料庫集群”的話,那么單單主資料庫為了具有日誌功能,就需要花費很大的性能代價。複製佇列溢出問題:主資料庫是並行處理而日誌拷貝是串列的,因此備份資料庫處理日誌記錄也是串列的。因此,FIFO佇列的溢出隨時可能發生。一旦發生,佇列必須重建,從而需要重新建立備份資料庫。此種方法對於一般客戶來講是不可行的。或者為了避免佇列溢出,必須保證主資料庫處理事務的速度小於備份資料庫,這樣將嚴重束縛主資料庫的性能發揮。由於日誌拷貝是異步的,主備資料庫不是實時一致。因此無法用備份資料庫作負荷均衡。由於主備資料庫永遠不一致, 主資料庫一旦發生事故,就一定會丟失數據。在這種情況下,要么需要手工恢複數據庫,這會消耗大量的人工成本,或者數據根本就不能恢復。串列同步複製。此類集群往往是由昂貴的專用軟硬體構成的,原理圖如下:
高速專用同步複製網路1

資料庫客戶
資料庫1
資料庫2

圖2. 硬體級同步複製示意圖
此類系統採用專用的高速網路和軟體技術,將每個資料庫的請求,通過同步複製的方式,同步在主備兩台資料庫伺服器上執行正確後,才將結果返回給資料庫客戶。
此系統的特點是:
主資料庫被強迫與備份資料庫同步串列處理,因此性能受到限制。主備資料庫中任意一個出現問題,都會迫使事務處理交易回滾,因此整個系統的可靠性比單機系統降低了一半。由於以上問題,這種備份方式只適用於近距離光纖網路(5英里)。專用系統造價昂貴,又加上述明顯缺陷,因此市場上很少被採用。基於雙機容錯技術從技術適應性的角度講,雙機容錯比較適合於無狀態套用,或者狀態信息較少的套用切換,以此達到套用級的高可用性目的,其實並不適合於資料庫級的套用切換。
DB引擎1
DB引擎2
共享陣列
資料庫客戶
虛擬IP

圖3. 資料庫雙機示意圖
此種結構往往是兩個伺服器共享一個磁碟陣列,這裡兩個伺服器共享一個虛擬的IP供資料庫客戶使用,形成一個單一的邏輯資料庫映象。此種所謂的資料庫集群的目的是,一旦主機系統出現問題,備份系統通過心跳機制的檢測,完成從主機系統到備份系統的切換,它有下列特點:
此種高可用性解決方案只是無狀態系統(典型的如Web伺服器)的普通容錯切換思想在資料庫領域的套用。此系統本身只有一個單一的數據映象,數據儲存在共享的磁碟陣例上,因此共享的磁碟陣例成為了整個系統的單點錯誤源。由於是單一數據映象,因此必須採用通常的複製或備份方法獲取第二份數據,以保證數據的安全性。因此所有複製或備份方法的缺點,此類系統全部存在。主機系統和備份系統之間是沒有任何負載均衡關係的,在正常情況下,備份系統是閒置在那裡,因此對用戶來說是一種投資浪費。在錯誤切換的時候,往往存在切換時間長,而且更嚴重的是存在丟失用戶交易數據丟失的現象,結果導致系統被迫停止服務,或者需要人工修複數據,或者數據永遠找不回來。在錯誤切換的時候,有時候會發生備份系統的資料庫啟動不了的情況,這時候,整個資料庫系統也就無法訪問了。RAC為代表的系統RAC的英文全稱是:Real Application Cluster(真正的套用級集群)。我們需要關注的是“套用級”。為了緩解資料庫系統日益增長的性能壓力,ORACLE公司推出了RAC系統。它基本結構如下:
DB引擎1
DB引擎2
RAC虛擬網路
共享陣列
資料庫客戶
虛擬IP

圖4. Oracle RAC示意圖
此類系統,專門是針對資料庫性能問題而提出的。採用共享磁碟陣列的方式,因此在結構上和上述雙機容錯相似,不同的地方在於此系統中的資料庫節點之間採用的不是簡單的心跳檢測,而是ORACLE公司自己定義的一套複雜的信息交換協定,以此來動態分配來自資料庫客戶端的請求。它的特點是:
是個套用級的集群,也就是針對ORACLE的資料庫管理系統(因為資料庫管理系統對於作業系統來講,就是一個“應用程式”,因此被稱為“套用級集群”),專門為提高資料庫性能而設計。此系統本身只有一個單一的數據映象,數據儲存在共享的磁碟陣例上,因此享的磁碟陣例成為了整個系統的單點錯誤源。管理配置複雜。由於是單一數據映象,因此必須採用通常的複製或備份方法獲取第二份數據,以保證數據的安全性。因此所有複製或備份方法的缺點,此類系統全部存在。由於資料庫系統本身具有高I/O的特性,因此,RAC系統里,磁碟I/O是提高性能的關鍵地方。綜合上所述,針對資料庫系統普遍存在的三大方面的問題,上述各個技術和方案,各有不同的側重,實現的代價和複雜度也各不相同,但是它們有共同的特點是:只解決資料庫系統的某一方面的問題,甚至在解決這方面問題的時候,同時加重了另外一個或兩個方面的問題。

3.DBTwin資料庫集群

DBTwin是北京浙潮科技基於動態並發事務的理念設計出的新型資料庫集群軟體,對當前資料庫集群領域是一次革命性的突破。由DBTwin構成的新型資料庫集群在數據安全性、高性能和服務可用性方面均具有非常好的伸縮能力,因此,我們稱其為“資料庫擴展器”(Database Scaler)。
資料庫擴展器DBTwin允許同時連線n個資料庫,由DBTwin網關對它們進行統一管理。而對於客戶端來講,DBTwin禁止了後面的n台資料庫,它看到的只是由DBTwin網關表現出來的一個虛擬資料庫服務,只連線客戶端只需要連線此虛擬的IP和連線埠,就能象訪問普通資料庫那樣進行操作。DBTwin資料庫集群的原理結構如下圖所示:



資料庫1
資料庫2
資料庫n
DBTwin網關
DBTwin網關
資料庫客戶
雙機熱備

圖5. DBTwin工作示意圖
DBTwin最大的特色是能夠對訪問資料庫的事務(Transaction)進行並發地處理:當DBTwin網關接收到插入、修改、更新等事務操作時,它同時將這個事務(Transaction)傳送到後面連線的n台資料庫上,這樣n台資料庫中的數據同時得到了更新;由於在任何時刻,DBTwin網關後面連線的n台資料庫的數據是完全一致的,因此當DBTwin網關接收到查詢操作時,整個資料庫系統可以實現負載均衡(Load Balance),由此達到客戶訪問負荷的動態分擔,提高整個系統的回響能力。

4.DBTwin的實現原理

DBTwin是一個中間件服務軟體,它工作在微軟的資料庫專用協定TDS層之上,如下圖所示:

TCP
物理網路
TDS(DBTwin工作層)
ADO .Net, ODBC,OLE DB,DB-Library
圖6. DBTwin工作層
TDS(tabular Data Stream表格數據流)是微軟資料庫客戶端與SQL Server伺服器進行通訊的未公開協定,DBTwin就工作在這一層,因此,DBTwin能支持所有的SQL Server客戶端數據組件。正象1433是微軟SQL Server的預設服務連線埠那樣,8106是DBTwin資料庫集群的預設服務連線埠,另外8105、8107、8108和8109是DBTwin或者它的代理端軟體的固定工作連線埠,因此,客戶在選擇連線埠的時候,一定要避免選擇這些連線埠,以免發生連線埠衝突。
事務是資料庫系統里一個基本,但十分重要的概念,DBTwin時刻檢測來自客戶端的事務。一旦接收到客戶事務請求,DBTwin將此事務同時發給集群中的每個資料庫,並且確保所有的集群資料庫要么全部提交,要么全部回滾此事務,以此保證每個集群資料庫的數據映象始終是處於一致狀態,同時保持對資料庫客戶端的透明、無縫連線。
批處理也是資料庫系統中的一個重要概念,DBTwin是以批處理為單位來進行負載均衡的。也就是說,每當DBTwin接收到來自客戶端的一次請求,這個請求其實就是一個批處理,這時候DBTwin會對此批處理進行語法檢查,並判斷出是否能負載均衡,若可以進行負載均衡,那么DBTwin將根據某一算法,挑選出其中某台集群資料庫來執行此批處理;如果此批處理不能負載均衡,那么DBTwin就同時給所有的集群資料庫傳送此批處理請求。
在DBTwin集群啟動之前,用戶可以通過PRT高級同步工具作數據同步,或者也可以利用SQL Server提供的BACKUP/RESTORE命令來作到這一點。在DBTwin運行過程中,如果有資料庫掉線了,這時,DBTwin會有兩種方式來修復集群,一是定時自動方式,此方式是預先設定好在某個時間進行資料庫同步和DBTwin網關的重啟動,它適合於一些晚上進行批處理作業的系統。另一種方式是手工同步方式,此方式針對的是由隨機錯誤,例如網路錯誤,伺服器重啟等導致的。無論哪種方式,在同步過程中,客戶端是始終客戶訪問DBTwin集群系統的,這樣整個資料庫系統的可用性就大大提高了。

5.DBTwin的特性

DBTwin有以下特性:
數據可靠性和安全性大大增強– 由於任何時刻系統同時擁有多份數據集,因此大大提高了整個系統的數據可靠性和安全性。假設單台資料庫伺服器出現錯誤的機率為0.01%,n台資料庫構成的集群系統出錯的機率就是。。
服務的可用性大大增強– 如果某一時刻,一台資料庫伺服器出現問題,其它的資料庫伺服器仍然能夠正常工作;同時,在利用DBTwin提供的PRT(高級同步工具)進行修復的同時,系統服務可以正常進行,真正使客戶的資料庫系統永遠線上,
顯著提升資料庫系統的性能–DBTwin能夠在多個獨立的資料庫系統之間實現動態負載均衡,進而顯著提升資料庫系統的整體性能。
充分利用已有投資,降低系統TCO(總體擁有成本)– 在現有所有別的方案中,備份資料庫伺服器平時是閒置在那裡的,無形中是一種浪費,DBTwin將這備份資料庫伺服器也充分利用起來,提高了資源的使用效率,降低了整個資料庫系統的TCO。
保證資料庫系統具有良好的伸縮性– 通過增加新的資料庫伺服器即可提升系統的性能、可靠性等。

6.DBTwin技術指標

非入侵部署
與所有的系統服務一樣,DBTwin也是通過唯一的入口-一對(IP,port)來向外提供數據服務。 因此,應用程式及其資料庫接口不需作任何修改。支持所有的資料庫接口:ADO .Net、ADO、RDO、DAO、OLE DB、ODBC、DB-LIBRARY等。
支持資料庫Microsoft SQL Server /6.5/7.0/2000/2005/2008的標準版和企業版。
事務處理同步複製 通過常用的寬頻網路, 快速的事務處理同步複製
高系統可用性自動的錯誤恢復,真正把意料之內和意料之外的停機時間縮至最短。網關在錯誤恢復期間的停止服務間隙達到小於10秒。
零單點錯誤源從DBTwin網關這一部件開始,整個資料庫系統是完全、徹底地物理冗餘。
數據“零”丟失DBTwin使得系統同時擁有多個實時一致的數據集,這樣從理論上講,就真正消除了數據丟失的任何可能性。資料庫可靠性達到目5個9,即99.999%。
動態負載均衡DBTwin對唯讀資料庫查詢操作可以進行自動的判別和動態負載均衡,這是當前唯一實現的針對資料庫的動態負載均衡技術,此技術可以大大改善整個資料庫系統的性能。性能提升在30%~300%之間,具體提升比例取決於套用系統及網路結構和軟硬的配置。
可伸縮性可伸縮的資料庫性能(負載均衡+非入侵式的資料庫陣列擴展),使得資料庫具有可伸縮性。需要更多的資料庫性能的時候,只要增加資料庫伺服器就可以了。
容災能力具備即時的災難恢復能力。
DBTwin自身的雙機容錯DBTwin支持自身的雙機主備容錯切換,也可以採用第三方的HA方案解決DBTwin自身的容錯問題。

7.DBTwin與備份/複製軟體及資料庫鏡像比較

DBTwin 備份(複製)軟體 鏡像
1 專為資料庫設計
2 支持資料庫集群 部分支持 部分支持
3 支持並發數據庫操作
4 支持動態負載均衡 部分支持 部分支持
5 工作方式 並行 串列 串列
6 支持多份數據集
7 支持多份一致數據集
7 單點錯誤源
8 支持業務連續性程度
9 數據丟失可能性
10 錯誤恢復自動化程度

8. DBTwin支持的系統環境

作業系統:Windows 2000 Server, Windows 2003 Server,Windows 2008 Server
資料庫系統:SQL Server 6.5/7.0/2000/2005/2008標準版/企業版。

相關詞條

相關搜尋

熱門詞條

聯絡我們