2011-03-13 31 views
3

我正在使用關係數據庫(SQL Server 2008)的項目。本地(本地)應用程序都讀取和寫入數據庫。我正在爲Azure(MVC2 Web Role)開發另一個前端,它將使用相同的數據,但採用只讀方式。如果我正在部署傳統的Web應用程序,那麼我會使用SQL Express作爲本地數據庫,並通過對應用程序的更新(數據更改非常緩慢)或通過某個同步系統部署更改。是否可以在Azure Web角色中運行SQL Express?

隨着Azure,圖片有點陰(對不起,我不得不)。我似乎無法找到任何信息來表明SQL Express是否可以在Web Roles內部工作,如果可以的話,如何去做。有誰知道是否可以在Azure Web角色中使用SQL Express?

其他選項我可以做的,如果被迫:SQL CE或使用SQL Azure。兩者都有一些缺點,絕對不是完美的。

感謝, 埃裏克

編輯 我覺得我的情況可能不是足夠清晰。

這些數據在部署之間不會改變,只能從Web角色中訪問;它基本上是一個靜態緩存。內部部分是一種紅鯡魚,因爲它不會影響網絡角色的數據(除了它的來源)。基本上,我想要做的是使用現有的T-SQL/DAL代碼的本地數據存儲/緩存。

雖然我可以使用SQL Azure,但它不會添加任何內容,並且如果有的話只會增加額外的開銷和失敗點。我也可以使用虛擬機角色,但這太昂貴/複雜。

在一個完美的世界,我會打包MDF到cspkg(所以它獲取與應用部署的),然後在本地使用它從角色中。如果沒有辦法做到這一點,那就沒問題,我需要弄清楚其他解決方案的優缺點。我們不住在一個完美的世界。 :)

回答

2

你也許能夠運行使用自定義VHD的SQL Express,但你不能依賴於任何數據每隔存在對VHD。虛擬機在重新啓動時會完全重置 - 重新啓動時沒有物理持久性。

如果您願意,您可能可以在Azure blob存儲中找到整個SQL Server安裝。

然而,在做這一切,你只能夠有一個可以使用該數據庫中的一個工人/ Web角色。請記住:一次只能將SQL Server數據庫連接到一個SQL Server。如果要擴展,則必須爲每個Web/Worker角色創建新的SQL Server實例。

的成本問題之外,我想不出任何東西,在SQL Express的,應該是對應用程序99.9%在那裏表演塞。

+0

Jeremaih-謝謝你的迴應。我沒有考慮在blob存儲上使用SQL Server文件(這是兩個世界中最糟糕的)。我可以使用SQL Azure,但這是對Web角色實例本地的只讀數據。使用SQL Azure只會降低速度並增加額外的失敗點。加上它是過度殺傷,而且更昂貴。 – 2011-03-14 04:49:08

+0

因此,你打算將數據預加載到本地虛擬機上的SQL Server中,並且從不修改它?如果是這樣,你應該沒問題。不過,它聽起來像SQLite或SQL Server CE會更好地爲您服務。 – 2011-03-14 14:29:14

+0

耶利米 - 這正是我想要做的。我可以簡化我的帖子,以便更清楚。 :)問題是,看起來你無法在Azure Web角色上獲得SQL Express。我將不得不將所有的T-SQL重寫爲CE可以理解的東西。這就是生活。 – 2011-03-14 15:33:45

2

添加到耶利米的回答是:SQL Azure的應該給你幾乎所有的SQL Express今天這樣,您可以使用同步服務對本地SQL Server和SQL Azure的同步。

如果您安裝了SQL Express插入VM角色,你會在$ 90每月消耗只是該實例,外加Blob存儲(你會希望有一個雲驅動器的耐用性)。根據定義,虛擬機角色(或任何角色)必須支持向外擴展;如果由於某種原因要擴展到2個實例,那麼這兩個實例都需要自己的數據庫副本,因此您需要爲每個實例創建一個blob快照。但是,請記住,如果您選擇在虛擬機中安裝SQL Express:一旦您擁有2個實例,並且每個Blob存儲實例的容量爲20GB,那麼您每月的收入將近200美元,重新維護虛擬機操作系統補丁,SQL Express配置和更新,失敗恢復過程等。相比之下,SQL Azure在20GB,同時花費相同的200美元,將提供更好的性能並與同步服務協同工作,同時完全移除任何操作系統或您的數據庫服務器管理任務。

+0

謝謝大衛。我應該澄清說,由於你提到的原因,運行虛擬機已經完全沒有了。儘管SQL Azure可以用於這種情況,但它確實不適合。數據是Web角色實例的本地數據,只讀,並且不需要持久(例如,讓它成爲cspkg的一部分就可以)。 – 2011-03-14 04:51:36

1

要添加到已有的答案,以及任何想知道是否在雲中運行SQL Express的好主意: 它作爲一個臨時存儲區域是有意義的。考慮這種架構方法: 說你正在旋轉節點來運行作業。在每個節點的本地SQL Express中存儲大量計算結果可能是一個好主意,並且在作業在節點上完成時立即提供聚合響應。將不再熱門的結果傳輸到非預編譯的SQL服務器以供將來的報告/等等可以在後續階段完成。從容量/等待時間/成本角度來看,SQL Azure可能不是最佳選擇,因此存儲數量巨大的結果並且ATS不總是適合賬單,特別是當涉及關係數據,性能或現有代碼時。

+0

感謝您的評論。這是我可以看到它有用的一種場景。看起來好像有很多地方這樣會很好,但看起來它會是一個不起眼的地方。 – 2011-03-14 15:34:44

0

如果它是一個只讀本地緩存 - SQL CE 4或SQLite的。

兩者都有實體框架供應商。

如果你正在給它寫信 - SQL Azure

相關問題