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