Azure的兩種關系型數據庫服務:SQL Azure與SQL Server VM的不同
《 Windows Azure Platform 系列文章目錄 》
?
如果熟悉Windows Azure平臺的用戶不難發現,對于SQL Server數據庫來說,微軟提供了兩種服務,分別是:
-Windows Azure SQL Database(也就是以前的 SQL Azure ),提供 PaaS 的關系數據庫服務
-Windows Azure SQL Virtual Machine ( SQL VM ),提供了 IaaS 的關系型數據庫服務
有些讀者可能會疑惑,為什么微軟要提供以上2種的關系型數據庫服務?我們在實際使用過程中應該如何進行選擇呢?
本文將從以下幾個方面,來比較和說明SQL Azure和SQL VM的不同:
-SQL Server兼容性
- 成本分析
- 高可用性
-維護性
-橫向擴展性
? 總的來說,微軟設計SQL Azure和SQL VM這兩種不同的關系型數據庫服務,出發點在于:
-微軟對SQL Azure進行了優化,以降低使用成本。SQL Azure提供了一個非常快速、簡單的方式,讓用戶可以在云中構建可以橫向擴展(scale out)的數據庫。同時還降低了后續的管理成本。因為客戶不需要維護任何虛擬機或數據庫軟件。
-SQL VM是在Azure虛擬機中運行的,所以SQL VM的數據庫版本與傳統企業內部使用的SQL ?Server版本沒有任何區別,這樣就可以讓現有的數據庫應用直接遷移到Azure云上。SQL VM提供了完整的SQL Server產品功能,并給用戶提供云端的、已經裝好SQL Server實例的虛擬機。
?
1.SQL Server產品兼容性
1)SQL Server VM提供了傳統企業內部使用的SQL Server的完全相同的功能(包括Data Engine, SSAS, SSIS, SSRS)。SQL Server VM與傳統部署在企業內部的數據庫主機區別在于:SQL Server VM是部署在云端的,你不需要考慮底層的網絡、存儲、虛擬化等等問題,這些微軟的Windows Azure都幫你準備好了;如果你想將本地的數據庫遷移到云端,只要將本地備份的bak文件在SQL Server VM上restore就可以了。而且微軟提供了很多的虛擬機模板(image gallery),你只要在management porta里,選擇你需要的SQL Server版本(2008/2012, standard/enterprise)等等,你就可以非常簡單的創建云端的關系型數據庫了。
另外微軟提供了 Windows Azure Virtual Network ,這個功能可以將企業內部的網絡和云端的網絡打通,并且保證網絡的安全可靠,這樣我們就可以實現 混和云 。你可以想象一下,在 混合云 的情況下,當我們企業內部使用SQL 2012 Always-On,并且通過SQL Mirroring將數據保存至SQL Server VM,這樣的DR(災難恢復)模式可以保證我們的數據萬無一失。
2)SQL Azure并不支持傳統企業內使用的SQL Server的全部功能,但是它實現了其中相當大的一部分。它不同于SQL Server企業版,你可以認為它是SQL Server的特殊版本,面向PaaS。雖然SQL Azure很特殊,但是SQL Server Management Studio和SQL Server Data Tool還是可以用來管理SQL Azure。SQL Azure最大的特點是橫向擴展能力,這會在隨后的博文中做詳細介紹。
我個人建議,對于傳統企業級應用來說,使用SQ Server VM能保證最大的產品兼容性。但是對于新的基于云的應用來說,SQL Azure是更好的選擇。
?
2.成本分析
1)SQL Server VM的使用成本會比較高,因為用戶需要支付費用=計算資源+存儲資源,比如Windows Server 2012 + SQL Server 2012 Enterprise。具體的費用可以參考: http://www.windowsazure.com/en-us/pricing/details/virtual-machines/#service-sql-server
2)SQL Azure的使用成本比較便宜,用戶需要支付的費用=SQL Azure數據庫大小。具體的費用可以參考: http://www.windowsazure.com/en-us/pricing/details/sql-database/
?
3.高可用性
1) 單個 SQL Server VM是無法實現數據庫高可用性的。因為SQL Server VM的底層是虛擬化技術,在數據中心的服務器可能出現由于硬件問題導致的服務器故障。在故障發生的時候,Windows Azure后臺的Fabric Controller就會自動將服務器內部的SQL Server VM遷移到同一數據中心的正常的物理服務器上。在 只有一臺SQL Azure VM 的情況下,在發生故障導致的自動遷移的過程中,如果有客戶端發起向云端SQL Server VM的請求時,就會造成請求的失敗。不能提供高可用。
如果我們建立了多臺SQL Azure VM (SQL Server 2012版本) ,加入Virtual Network,并且設置了 AlwaysOn Availability Group (這里不詳細介紹Always-On),這樣就可以實現SQL VM的高可用了。但是這需要我們的IT管理人員手動來配置(Virtual Network, alwayson availability group etc.)。并且由于增加了額外的備用SQL VM節點,用戶需要支付的云服務費用會 增加 。
2)SQL Azure在設計之初就考慮了高可用性,每次我們在SQL Azure創建數據庫的時候,在后臺會創建一個主數據庫備份和2個備用的數據庫(三重備份)。當主備份發生異常的時候,SQL Azure 會將備份節點替代主備份,不會出現宕機時間。所以 SQL Azure會提供99.9%的高可用性 ,并且使用該高可用性是 無需支付額外費用 的。
?
4.維護性
1) SQL Server VM是IaaS。也就是說,用戶需要自己維護操作系統和數據庫軟件,包括升級補丁、安裝備份工具等。這會給IT人員增加額外的工作。
2)SQL Azure是PaaS的。Windows Azure平臺會自動進行配置,微軟的數據中心會自動幫你打補丁和升級軟件。所以會減輕IT人員的工作。
?
5.可擴展性
可擴展性分為縱向(scale up)和橫向(scale out):
scale up一般指提升單個節點的能力,scale out一般指多節點并行計算
scale up
1)目前Windows Azure VM的最強計算能力是8 Core+14GB(extra large) or 8Core+56GB(A8),16TB的存儲和800MB的網絡帶寬。我們如果要縱向擴展的話,會受到目前Azure VM的大小限制。
2)SQL Azure不能配置硬件設備。
?
scale out
1)Azure VM的scale out需要手動配置,比如Always On只讀副本,數據庫分區等等。
2)SQL Azure包含SQL Federation功能(我會在后續的文章中進行介紹)。有了SQL Azure Federation,我們可以將1個數據庫分割在幾個甚至上百個節點上,SQL Azure是天然支持橫向擴展的。
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
