前言
面對電子商務對於全天24小時永不停止的運轉需求,儲存管理產品最大的貢獻之一就是將磁區管理與檔案管理技術整合,成為具備高可用性、高效能、高延展性的電子商務資料儲存基礎。若要充分體會全面資料儲存管理對於電子商務資料庫的重要性,最好先了解電子商務資料庫傳輸(I/O)的本質。
電子商務資料庫傳輸(I/O)的本質
由於電子商務環境每秒產生之資料傳輸要求(I/O request)次數非常頻繁,而每次傳輸要求之資料傳輸量(Transfer rate)都只有數千位元而已,故電子商務應用軟體對每秒可處理多少資料傳輸的要求較為重視。應用軟體需求資料之順序是無法預測的,所以電子商務資料管理系統的儲存裝置必須具備隨機存取功能。正由於對隨機存取與小規模資料庫傳輸的絕對需求,使得存取(accessing)資料方式(使磁碟機讀寫頭到達正確的磁碟位置)遠比傳輸(Transferring)資料重要,將大大的影響並決定電子商務資料庫傳輸的效能(I/O performance)。因為資料存取牽涉較多的機械動作,更突顯了磁碟機械的效能對應用軟體效能的重要。
若要改善對於I/O要求極高的應用軟體效能,有兩種方法:
將資料儲存於穩定的記憶體中。
加裝更多磁碟以平衡資料庫傳輸(I/O)負載。
快取記憶體與資料庫管理系統
快取記憶體非常適合用於讀取資料。資料可以先讀取入快取記憶體中,然後再慢慢傳送給應用軟體。所以,資料庫管理系統都廣泛運用主機上之讀取快取(read cache)記憶體。而目前大部分主機可安裝使用之快取記憶體容量皆遠超過資料庫管理系統可直接使用的容量。寫入快取就不一樣了。運用暫時寫入(write-through)快取,就可以在寫入作業結束訊號發出前,將資料寫入磁碟。運用回寫(write-back)快取,則會先發出結束訊號,而資料實際寫入磁碟的動作卻會被延後到稍後執行。雖然運用暫時寫入快取的寫入效能大約等於完全不使用快取的寫入作業效能,但是好處在於,當應用軟體再度讀取最近寫入的資料時,將會直接從快取記憶體中讀取,使速度加快許多。
另一方面,回寫快取則可以大幅改善應用軟體的效能,因為應用軟體無需等候磁碟將資料完全寫入即可處理下一筆資料庫傳輸要求。然而,應用軟體所寫入的資料還是有可能因為停電或其他系統故障,導致快取記憶體內容毀損,而使內含資料消失無蹤。
良好的資料管理系統必須提供充分確實的安全防護,保障使用者的資料完整性。尤其,資料管理系統會要求在磁碟資料確實更新後,才通知應用軟體。理由非常簡單,倘若資料更新僅及於暫時性的快取記憶體時,萬一供電失常或其他系統故障都可能將所有資料清除一乾二淨,而導致資料記錄不一致。
資料庫供應商通常不鼓勵採用回寫快取,而大多建議關閉RAID子系統與磁碟回寫快取。他們認為若使用回寫快取,則資料管理系統將無法精確地得知資料是否安然地儲存在磁碟裡,因而無法保證資料的完整性。因此,大多的資料管理系統通常無法利用能夠增強資料庫傳輸(I/O)效能的回寫記憶體。
I/O負載平衡
由於磁碟機的機械效能是對於應用軟體存取速度具有極其關鍵之影響力,因此可透過加裝更多磁碟(更多容量以供存取個別資料),並將資料散佈期間來改善效能。然而,事情並非如此單純。大部份的應用軟體難免都會有資料存取的「尖峰期」“hot spots",有某些資料表或索引會經常被存取(例如索引樹狀結構的根目錄等),或者在某些特定時段被大量存取。例如,每天一早,客戶資料庫存取的尖峰期可能是包含美國東岸客戶記錄的資料表。而到了中午,資料庫存取的尖峰期則變成包含美國西岸客戶記錄的資料表了。
倘若每個索引(Index)或資料庫表格(Table)分別儲存在不同的磁碟,則該磁碟的效能就會限制索引或資料庫表格的存取效率,不但使得大部分的磁碟閒置,造成資源極度浪費,更令少數包含大型資料庫的磁碟因為資料庫傳輸(I/O)要求過高而達到飽和狀態。
重新配置索引與資料庫表格,使經常被存取的資料分散至各磁碟,是改善應用軟體效能的方法之一。基本上,上述方法會有成效,但還是會因為下列3個原因而效果不彰:
1. 耗費時間與資源:
若要運用這個技術改善效能,則資料庫管理者必須耗費時間監控資料庫的存取狀況,加以分析,然後依據存取率移動資料物件。然而,大部份資料管理者最不應該從事的就是這種重複性的工作,就如同大部分資料上線時最不應該浪費時間處理非必要(non-productive)I/O。
2. 無法保證準確:
企圖利用過去的資料庫存取活動分析而重新配置資料,就好比預測未來一般不切實際。倘若資料庫的某部分在星期二比星期三忙碌,而使得管理者必須重新分析並加以調整資料位置,未免太過不切實際。
3. 幾乎無法實現:
資料庫表格通常由索引分類(例如,以客戶名稱欄,或由郵遞區號欄分類),而這些分類儲存在不同的磁碟。若資料存取與這種分類方式相關時(譬如當儲存的批次更新適用於該資料庫時),仍會造成另一個尖峰期。例如,已經儲存的批次交易更新以"B"字母開頭的客戶名稱時,將導致包含該資料表的磁碟被頻繁存取,而其他磁碟則閒置。
磁區管理軟體(Volume Manager)可透過跨磁碟平均分配資料區塊,而平衡I/O負載。資料平均分配功能可以將單一資料庫表格平均分配散佈至多重磁碟,由於資料平均分配,就不必在意某資料表「過熱」,因為每個資料表都分配給數個磁碟,可以平均存取所有硬體資源。
磁區(Volumes):資料完整性與I/O效能
對於成功的電子商務而言,資訊必需可供永不停頓的存取,但磁碟、I/O匯流排,甚至電腦都可能故障。因此,電子商務全天24小時不停運轉的先決條件就是儲存裝置必需隨時可用。磁區管理軟體將實體磁碟整合成虛擬磁區,可容忍磁碟與I/O匯流排故障。對於資料管理系統與其他應用軟體而言,磁區在功能上比實體磁碟更為理想,因為透過主機架構(Host-based)的RAID技術,磁區可以容忍磁碟故障,約略等同於磁碟陣列(RAID Subsystem),請見(圖一)。
主機架構的RAID磁區具備兩個主要優勢:
1.初期與後續的硬體投資明顯較低:
當電子商務開始營運時,通常不會有太多的線上資訊。因此,主機架構的RAID可搭配價格便宜的商用磁碟,及便宜的商用主機匯流排連接器(adapter),即可保護少量的資料,無需大筆金額投資儲存硬體。而當電子商務逐漸成長而擁有較多線上資料時,主機架構的RAID還可以逐次加裝單一磁碟而擴充延展,但是硬體RAID子系統的延展通常就要更大金額的投資。
2.主機架構的磁區可補充RAID磁碟子系統:
隨著電子商務成長而運用更多應用軟體存取線上資料時,通常就需要RAID子系統。而主機架構的磁區可將硬體RAID子系統加以整合,以增加容量或加強可用性。
資料平均分配以平衡I/O負載
磁區管理軟體也支援跨磁碟的資料平均分配功能,可平衡負載並使效能最佳化。跨磁碟平均分配資料的方式有三種:
1.無故障防護:
這種架構有時也稱為RAID 0,可跨現有磁碟資源,平衡I/O負載。但由於不提供磁碟故障防護,故千萬不可以用於重要的電子商務資料(圖二)。
2.提供同位元檢查防護:
這種結構通常稱為RAID 5,提供比鏡射更低成本的故障防護功能,利用「同位元檢查資料」磁碟(parity disk),保護其他存放使用者資料的磁碟,以免其中某個磁碟故障造成資料遺失。然而RAID 5寫入效能較差,故不適合於經常更新的資料庫表格。在電子商務應用中,RAID 5適合資料極少更新的狀況,例如:網頁或資料倉儲。
3.提供鏡射功能:
這種結構有時候稱為RAID 0+1,在平均分配功能所提供的負載平衡之外,還附加了鏡射容錯,屬於關鍵業務線上資料的容錯,是效能與實用的理想組合。平均分配加上鏡射功能可用來防護所有的關鍵性電子商務資料,例如銷售與財務記錄,以及經常存取的資料,例如庫存、製造或交貨記錄。
使RAID保護的資料隨時可用
全天24小時不停運作的電子商務所需之特定格式的RAID的適用性,取決於故障發生時資料的遭遇。有兩種故障對主機架構之RAID磁區的資料可用性影響很大:
- 1.RAID磁區中的某磁碟故障
- 2.RAID磁區管理軟體所在的系統發生毀損
RAID和磁碟故障
當鏡射磁碟故障時,磁區管理軟體會存取磁區的剩餘磁碟。在同位元檢查RAID磁區中發生磁碟故障時,磁區管理軟體必須依據應用軟體的要求使資料再生。如此,鏡射和RAID磁區可以容忍單一磁碟故障。為預防磁他磁碟故障導致資料遺失,因此當單一磁碟故障發生後盡速進行磁碟復原是極為重要的課題。磁碟復原的程序有二:
- 1.以其他磁碟取代故障磁碟
- 2.在替代磁碟上重建故障磁碟的內容
- 磁區管理軟體具備"線上重新配置"(hot relocation)功能,可供儲存裝置管理者預先指定一個以上的備用磁碟,以供發生磁碟故障時自動用於磁碟復原。若有備用磁碟,磁區管理軟體就會立即在該備用磁碟上開始重建故障磁碟內容,可無需人工介入恢復流程,使資料恢復的時間縮至最短。
- 磁區管理軟體會完整地重建故障磁碟內容,而應用軟體仍可正常使用受影響的磁區。重建作業必須仰賴資料傳輸(I/O),並對應用軟體的執行有很大影響。而磁區管理軟體容許系統管理者調整用於重建作業之資料傳輸(I/O)量,使對應用軟體的衝擊減至最小。
RAID和系統損毀
即使I/O與多重磁碟相關,寫入RAID磁區的作業仍需自動化;也就是說,每次寫入都必須針對全體磁區。例如,若應用軟體寫入資料至鏡射磁區,該資料必需寫入至磁區中所有的磁碟。同樣地,應用軟體每次寫入資料到RAID 5磁區,則同位元檢查和使用者資料都必需更新。
保證自動更新是RAID技術的一大難題,因為每當RAID某部分完成更新程序時,就是發生系統故障的大好機會。若發生故障時,可能要很久一段時間之後才會發現資料已經毀損了。
若毀損發生在寫入鏡射磁區的所有磁碟,那麼隨後由不同的磁碟執行讀取可能會產生不同的結果。若毀損發生在RAID 5磁區的使用者資料更新之後,而在同位元檢查更新之前,則可能要等數星期或數月之久,直到其他磁碟故障而使用過時的同位元檢查再生資料時,才會被發現。
若要保證RAID磁區自動更新,需要:
1.檢測系統損毀遺留不一致的磁區
2.在故障恢復後儘快恢復內部磁區的一致性(例如,使鏡射磁區的所有磁碟內容相同,或同位元檢查比較RAID 5磁區的所有區塊)
另一方面,由於磁區管理軟體會假設系統故障後所有磁區是不一致的,而將所有資料都加以複製或重建,導致較長的恢復時間。比較有效率的策略是保存資料更新磁區的記錄。當系統重新啟動時,就會讀取該記錄,而只有相對應的資料區域會被重建。
與資料庫恢復機制整合
資料庫管理系統會運用自己的記錄與恢復機制,在系統故障後恢復資料庫完整性。即使資料庫的儲存磁區在系統毀損後仍原封不動,仍不保證資料庫的傳輸完整性,例如只有傳輸完成後才會反應在資料庫中。舉例來說,Oracle就是在系統故障後執行redo log,來修復任何可能的損失,保證資料庫的一致性。由於資料庫管理系統非常瞭解資料損失的風險,您可以放心地將故障恢復的工作交付資料庫系統(圖三)。
磁區管理軟體並不使用自己的更動區域記錄來恢復包括資料庫資料的磁區。這種整合式的恢復技術有兩個優點:
- 1.快速重新啟動:由於磁區管理軟體無需恢復資料庫表格,資料表包含大部份資料庫的清單,資料庫管理系統(以及應用軟體)可以更快開始重新啟動的流程。
- 2.精密的恢復:由於資料庫管理系統可以針對需要恢復的資料進行恢復作業,以避免不必要的時間浪費。
運用磁區技術來滿足電子商務的效能需求除了為線上資料提供高可用性儲存裝置之外,一般而言磁區管理功能會使原始磁碟表現更為優秀。各種類型的RAID磁區對資料傳輸(I/O)效能的影響都有些微不同。設計電子商務資料庫時,如果能對RAID磁區的特性有所瞭解,將對適當放置資料有所助益。
鏡射磁區通常在讀取時會使單一磁碟表現更優秀,因為磁區管理軟體會透過選擇最不忙碌的鏡射磁區的磁碟,來滿足各讀取要求,而使I/O延遲降至最低。
兩個鏡射磁區的預期效能會比單一磁碟稍低。因為磁區管理軟體必須鏡射每個應用軟體寫入要求至磁區的每一磁碟,這些寫入是彼此獨立的(與RAID 5寫入不同),而且可以同步執行。此外,更動區域登錄需要耗費一些時間,讓應用軟體改寫新的區域。
RAID 5與單一磁碟相比,寫入效能較差,因為每個應用軟體的寫入都會要求磁區管理軟體執行一系列讀取與寫入至RAID磁區的磁碟。因此,經常更新電子商務資料庫表格時,不建議使用RAID 5磁區。
結論
資料庫管理系統的基本觀念就是將資料與應用軟體分開,資料庫提供安全性、完整性、交易規範與恢復能力,在資訊技術成長、變更與更換的同時,使資料與應用軟體合而為一。而儲存裝置品質越高,則資料庫愈發揮功效。
本文介紹的磁區管理技術,正是一個高效能、有彈性、可延展的電子商務資料庫基礎之一,具備初期與後續硬體投資成本較低及主機架構的磁區可補充RAID磁碟子系統等優點。
除了磁區管理技術外,另一個儲存管理的重要技術則為檔案系統,它可強化資料庫表格與索引的效能、彈性與管理,本系列下期將為各位詳細介紹,敬請期待。