簡介
以
雲計算為代表的新型網際網路計算模式正成為當前企業界和學術界的研究熱點。雲計算的一個特徵就是通過基於網際網路的服務和“託管”及“租用”的模式為各類用戶提供IT基礎設施能力。隨著雲計算的發展,其套用範圍得到進一步的擴展,人們開始嘗試利用雲計算技術來提供數據套用託管服務,特別是大量的行業數據套用,即資料庫即服務(Database as a Service,DBaaS),以降低數據套用系統部署及運維的成本。DBaaS平台使用多租戶實例隔離和資源池化的技術手段,對用戶和真實硬體資源的使用情況進行隔離;這樣不僅能更好地利用底層的硬體資源,也使得用戶更關注數據業務本身。混合、異構資料庫即服務平台在原有資料庫即服務平台的基礎上最佳化了異構特性支撐能力和跨數據中心異構支撐能力。當然,一個完善的 DBaaS架構還應具有較為完備的安全機制、自動資源管理和綜合性能規劃等功能,並且能夠適配各種不同的接入設備,DBaaS所具備的很多特性也是傳統資料庫服務架構自身已具備的,所以DBaaS 是對資料庫功能的封裝和創新,DBaaS不能脫離傳統資料庫技術而獨立存在。
資料庫即服務的優劣勢
DBaaS的優勢
DBaaS解決方案既可以解決這些問題,又能為客戶節約資金。相反作為解決方案提供商,採用DBaaS模式似乎就並不那么有吸引力了,因為與企業內部署軟體的解決方案相比,DBaaS意味著更低的利潤。但DBaaS系統其實具有更大的市場機遇:像其他雲服務一樣,DBaaS意味著更短的銷售周期,更少的啟動費用,持續不斷的收入,也意味著比之前更多的客戶。
由於DBaaS解決方案可以降低首次投入成本,對於那些小企業來說,他們往往認為內部部署的資料庫成本太高,DBaaS的成本和靈活性優勢對小企業吸引力更大,他們是雲資料庫解決方案的重點客戶群體。採用DBaaS解決方案,他們也可以使用同大企業一樣的技術。在大型組織中,DBaaS可以提供部門級解決方案,而無需IT部門和採購部門的介入,提供更快和更容易的方法來實現小型解決方案。由於能夠以較低的成本向客戶提供IT所有權,當節約成本成為客戶最高優先權時,解決方案提供商可以向更多的客戶同時提供服務。雖然有許多來自RDBMS固有的局限性,客戶還是可以使用DBaaS系統所能提供的所有能力。資料庫雲服務消除了組織對專職人員、本地資料庫存儲設備的需要。他們不必安裝、配置和維護任何軟硬體。
事實上,任何規模的組織都可能受益於外包服務,並在一個標準化和最佳化的平台上統一其資料庫管理任務。基於其本身的特性,DBaaS提供了敏捷和高效的資料庫服務,它可以支持多變的需求。而且其固有的彈性使得它易於擴展以處理不斷增長的需求,或當需求減弱時縮減規模。
然而,DBaaS並不意味著解決方案提供者要讓自己失業。與其他系統一樣,在實施DBaaS解決方案時,客戶可能需要部署、遷移、支持、異地備份、系統集成和災難恢復等方面的幫助。接下來,應用程式需要使用資料庫,資料庫本身需要設計、開發和部署。還有,客戶怎樣實施混合系統,或者需要幫助管理多個雲服務?
與此同時,與資料庫相關的流程的逐漸標準化,使得解決方案提供商能以更便捷的方式提供服務、部署應用程式、規劃容量和管理資源。DBaaS模式還有助於減少數據和資料庫的冗餘度並提升整體服務質量。
最重要的是,解決方案提供商應記住DBaaS通常僅僅是解決方案的一部分。客戶之所以與他們的解決方案提供商協同工作,不僅是因為他們出售的產品,而且還因為他們所提供的服務。DBaaS系統本身並不提供面對面訪問或個人客戶關係或持續不斷的支持。這些就是需要解決方案提供商的原因。他們幫助客戶選擇正確的解決方案、規劃集成和遷移戰略,然後協助實施。
DBaaS的缺點
當然,這一切聽起來不錯,無疑DBaaS具有很多相對於RDBMS的優勢。然而,DBaaS也有其局限性,雲服務中固有的局限性就是之一。當客戶開始將數據放入雲端時,他們會遭遇到無法控制的網路性能問題。如果網際網路服務提供商,支撐數據的雲服務,或它們之間任一點網路被堵塞或中斷,他們就會遇到與數據延遲或應用程式故障有關的問題。如果問題發生在企業內部,解決方案提供商可以排除故障找出原因。
此外,一些典型的RDBMS功能並不總是在DBaaS系統中可用。例如,Windows Azure SQL Database(以前的SQL Azure)是微軟的DBaaS產品,提供了一個類似於SQL Server的資料庫平台。然而,Windows Azure SQL Database並不支持數據壓縮和表分區之類的功能,而且SQL Database支持的Transact-SQL語言只是完整版的一部分。另外,因為解決方案提供商不能控制物理資源,所以他們不能將數據檔案和索引分配給特定的硬體。事實上,在任何DBaaS中,解決方案提供商對如何管理物理資源都沒有控制權,因此他們可能會發現由於DBaaS的局限性使得他們提供給客戶的遠遠小於客戶所期望的。
此外,使用DBaaS能讓收入損失從其他業務上得到彌補,如軟體更新和硬體管理。也許決定走DBaaS之路的客戶可能會跳過解決方案提供商,儘管這個決策看起來有點短視。另外,DBaaS會導致單一客戶利潤率的下降,因為雲服務一般是依靠高客戶數來抵消較低的利潤率。
DBaaS的走向
儘管DBaaS模式有缺點,但它還是適合某些客戶群體,這為解決方案提供商提供了新的商機。鑒於雲服務的增長,解決方案提供商除了擁抱這些技術還有什麼選擇呢?如果他們不這樣做,他們就會冒著被競爭對手擊敗的風險。但他們不能只想到如何把DBaaS的利潤率與企業內部系統相比較。這是無法比較的,因為基於雲的資料庫提供了不同的模式。關鍵是要通過圍繞雲計算產品來包裝其他增值服務以適應不斷變化的市場條件:這就是DBaaS。
也許最好的策略是以不變應萬變:給客戶他們所需要的,不多也不少。如果DBaaS適合他們,他們就不應該買別的東西。事實上,雲計算產業一直推崇自助服務,但提供這些服務的公司已經開始認識到解決方案提供商推銷他們商品的價值。如IBM公司最近宣布讓渠道合作夥伴分銷其SaaS應用程式的新計畫。微軟認為合作夥伴是銷售其雲計算服務的重要組成部分。然而即使有這種趨勢,DBaaS仍然不同於內部資料庫,解決方案提供商必須認識到這一點;否則,他們不僅僅是丟失幾個客戶,而是要失去的更多。
要求
行業數據套用託管不同於面向公眾的數據託管(如Amzon的RDS等網際網路公司提供的數據託管服務),在數據服務方面存在以下特定要求:
(1)數據隔離要求。不同單位/部門出於安全等方面因素考慮,對託管的數據具有嚴格的隔離需求,因此難以採用當前SaaS多租戶資料庫中廣泛使用的共享資料庫(包括共享數據Schema和隔離數據Schema)的技術。
(2)性能隔離要求。不同單位/部門的數據套用具有不同的用戶對象和使用模式,由此會產生不同的用戶負載並進而占用大部分系統資源,從而影響其他租戶請求負載的執行,即發生資源劫持,然而從租戶自身的角度這種情況則是不希望發生的。
(3)可靠性保障要求。由於行業數據套用所需託管的數據資源具有較高的業務價值,提出數據託管需求的單位/部門在數據存儲及數據訪問的可靠性保障方面具有高於一般網際網路用戶的要求。
針對上述要求,提出一種無共享架構(Shared-Nothing)下基於虛擬機的數據套用託管方法及相應的資料庫即服務系統。該方法的基本思想是為租戶提供基於獨立虛擬機的資料庫託管環境,從而在滿足不同租戶資料庫之間的數據隔離和性能隔離的前提下,同時使得不同租戶資料庫之間共享伺服器以減少系統資源(CPU、記憶體和IO)使用量;同時,為了提高託管數據的可靠性保障,每個租戶資料庫至少建立兩個資料庫副本。在這種方式下,租戶的資料庫副本部署在虛擬機上,使得伺服器資源可以分配給不同租戶,從而能夠靈活地控制租戶資料庫服務的伺服器資源分配並保障租戶間的數據隔離和性能隔離。此外,在無共享架構下,提出了支撐多租戶資料庫的虛擬機資源分配這一關鍵問題,該問題可以看作是如下最佳化問題,如何在伺服器集群上為每個租戶配置部署資料庫副本的虛擬機所占用的系統資源,從而實現用最少的系統資源滿足所有租戶的資料庫性能需求。按照上述思路,支持行業數據套用託管的資料庫即服務系統包括以下三個層次的內容:
(1)數據託管基礎設施層。該層次在一組共享的物理伺服器環境基礎上,通過虛擬機的形式提供對租戶資料庫的支撐,包括租戶資料庫虛擬機的創建及撤銷、計算及存儲等物理資源的分配與監控等。
(2)數據託管管理層。該層次是資料庫即服務系統的核心,它對託管的租戶資料庫進行統一的管理、監控,並利用數據託管基礎設施層根據數據請求負載對承載資料庫的虛擬機進行動態資源調度(即CPU、記憶體等資源分配的調整)。
(3)數據託管套用層。該層次由歸屬不同租戶的眾多數據套用系統構成,由於數據託管管理層提供了標準的資料庫服務,套用系統可以基於標準的資料庫接口來完成對數據存儲及數據訪問等請求,而不必考慮數據實際部署的虛擬機、物理機器及網路地址等信息