SQL Azure數(shù)據(jù)庫(kù)部署最佳實(shí)踐(上)
雖然SQL Azure是基于SQL Server技術(shù)的,并且SQL Server的大多數(shù)***實(shí)踐都適用于SQL Azure,但在構(gòu)建新類(lèi)型的應(yīng)用系統(tǒng)時(shí),面對(duì)一些體系結(jié)構(gòu)和特征的差異還需要進(jìn)一步的考慮和深究。
例如,當(dāng)數(shù)據(jù)庫(kù)負(fù)載過(guò)多時(shí),需要考慮數(shù)據(jù)庫(kù)連接方式的不同和SQL Azure數(shù)據(jù)源連接不暢,并且開(kāi)發(fā)應(yīng)用程序處理在傳統(tǒng)SQL Server應(yīng)用程序中未遇到的問(wèn)題。這篇文章將為你提供若干建議和***實(shí)踐來(lái)幫助你進(jìn)行SQL Azure數(shù)據(jù)庫(kù)部署。
如果您的前端應(yīng)用程序在Windows Azure主機(jī)上,則應(yīng)將應(yīng)用程序和SQL Azure數(shù)據(jù)庫(kù)放置在同一機(jī)器上,這將通過(guò)減少應(yīng)用程序和數(shù)據(jù)庫(kù)服務(wù)器之間的延遲來(lái)優(yōu)化連接。傳統(tǒng)上,Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器在同一臺(tái)機(jī)器上,但SQL Azure主機(jī)放置在世界上的幾個(gè)數(shù)據(jù)中心。因此,從系統(tǒng)配置方面看,Windows Azure的應(yīng)用程序應(yīng)跟SQL Azure放在相同的機(jī)器上。
正如傳統(tǒng)數(shù)據(jù)庫(kù)通過(guò)向外擴(kuò)展而不是向上擴(kuò)展來(lái)處理負(fù)載應(yīng)對(duì)更大、更頻繁的使用。SQL Azure數(shù)據(jù)庫(kù)因?yàn)橘Y源的限制更適用于此規(guī)則。當(dāng)SQL Azure發(fā)現(xiàn)一個(gè)數(shù)據(jù)庫(kù)使用了過(guò)多的CPU和磁盤(pán)I / O時(shí),它通過(guò)節(jié)制吞吐量來(lái)確保其他數(shù)據(jù)庫(kù)不會(huì)受到影響。由于在數(shù)據(jù)庫(kù)一級(jí)實(shí)施節(jié)流,可在水平或垂直方向的多個(gè)數(shù)據(jù)庫(kù)中分散大量數(shù)據(jù),通過(guò)這種方式,連接不暢的機(jī)會(huì)將會(huì)減少,任何潛在的連接不暢也只會(huì)影響一部分?jǐn)?shù)據(jù)集。
此外,如果需要在兩臺(tái)數(shù)據(jù)庫(kù)間啟動(dòng)SQL Azure的故障切換,小數(shù)據(jù)庫(kù)可以做得更快。同樣,如果你有一臺(tái)只讀的數(shù)據(jù)庫(kù)服務(wù)器從SQL Server得到刷新,您可以在SQL Azure中創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)使得應(yīng)用程序可以循環(huán)或者隨機(jī)選擇訪(fǎng)問(wèn)其中哪一個(gè)數(shù)據(jù)庫(kù)。這種方式,您可以在SQL Azure上分布負(fù)載并減少連接不暢的機(jī)會(huì)。
另一件要注意的是SQL Azure服務(wù)器的連接更容易受到干擾,你的應(yīng)用程序應(yīng)該能夠更好的處理它們并提供重連接的透明性。相比較傳統(tǒng)的SQL Server環(huán)境,有若干場(chǎng)景可能發(fā)生連接的中斷。例如,如果你離開(kāi)本地網(wǎng)絡(luò),連接失敗會(huì)發(fā)生在多個(gè)點(diǎn)上包括路由器、交換機(jī)、區(qū)域互聯(lián)網(wǎng)中斷等,還有SQL Azure數(shù)據(jù)庫(kù)的工作方式。如果你的數(shù)據(jù)庫(kù)服務(wù)器出現(xiàn)故障,SQL Azure將啟動(dòng)一個(gè)新服務(wù)器聯(lián)機(jī)并恢復(fù)您的數(shù)據(jù)庫(kù)。這是一個(gè)很快的過(guò)程,只用幾秒鐘,但任何現(xiàn)有連接將被中斷。
【編輯推薦】