[SDK2.2]SQL Azure (13) Azure的兩種關係型數據庫服務:SQL Azure與SQL Server VM的不一樣

  《Windows Azure Platform 系列文章目錄html

 

  若是熟悉Windows Azure平臺的用戶不難發現,對於SQL Server數據庫來講,微軟提供了兩種服務,分別是:sql

  -Windows Azure SQL Database(也就是之前的SQL Azure),提供PaaS的關係數據庫服務數據庫

  -Windows Azure SQL Virtual Machine (SQL VM),提供了IaaS的關係型數據庫服務windows

  有些讀者可能會疑惑,爲何微軟要提供以上2種的關係型數據庫服務?咱們在實際使用過程當中應該如何進行選擇呢?安全

  本文將從如下幾個方面,來比較和說明SQL Azure和SQL VM的不一樣:服務器

  -SQL Server兼容性網絡

  -成本分析工具

  -高可用性post

  -維護性優化

  -橫向擴展性

   總的來講,微軟設計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的使用成本會比較高,由於用戶須要支付費用=OS+APP,好比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是自然支持橫向擴展的。

 

   其餘SQL Azure Database的技術限制,請參考MSDN文章

  https://msdn.microsoft.com/zh-cn/library/azure/ee336245.aspx

相關文章
相關標籤/搜索