2

我正在研究將.NET Web應用程序移動到Azure的可行性。處理Web服務器方面的多角色設置似乎不僅僅是有能力的。Azure數據庫設計,分區數據表vs聯合?

我對Azure數據庫性能方面有所保留,並針對我們的需求採用了正確的橫向擴展策略。我們使用一個包含120個表的單個數據庫,其中80%的事務在10個表上運行。其餘部分用於各種帳戶級別設置和全局引用。最大的表格由500萬行組成,並且在剩餘的9個大表格上使用一組觸發器進行操作,每個大表格反過來保存500k到250k行之間的任何地方。

我最初的想法如下:

  1. 移動最大的表到它自己的數據庫實例和使用同義詞引用它。我現在認識到Azure DB似乎不支持跨數據庫實例的SYNONYMS。

  2. 使用聯合消除跨越多個Azure數據庫實例的工作負載。我們的數據庫只有5GB,所以這可能是一個不成熟的選擇?

  3. 使用具有SQL的更高規格虛擬機來爲數據庫提供服務。

我很欣賞這裏有許多未知因素,我不指望一個明確的答案,我只是想看看有什麼感受社區#1可以提供。

信息

  • 當前設置:單一的SQL Server 2008 R2實例與具有12 GB RAM一個像樣的規範多核服務器上運行120臺單一的數據庫。
  • 當前的性能非常好,我們可以在這方面進行擴展。
  • 數據庫每月增長10%,嚴重依賴於關係數據,觸發器和複雜的存儲過程,因此很難將Azure表用作替代方案。

回答

2

您正在試圖解決兩個問題一次,這可能不是最好的方法。首先,你是遷移一個現有的應用程序。其次,您正在嘗試開發橫向擴展架構。如果您嘗試並同時執行這兩項操作,您將遇到架構問題。我建議你首先遷移應用程序,而不必太擔心擴展。一旦你運行了應用程序,你就可以開發一個更具可擴展性的架構。你會發現很少有可擴展的,SQL和低成本的解決方案 - 所以你提出的任何「可伸縮」的解決方案,對SQL的高度依賴性,都會有一些令人痛苦的折衷。

爲了建立一些更具可擴展性,你將不得不採取仔細看,並計劃大量返工,您現有的架構。將應用程序分解成單獨的工作負載,放棄對T-SQL的高度依賴,觸發器和複雜的存儲過程......以及其他一些事情。需求/商業案例是否值得,取決於你的應用路線圖。

假設你有更長期的很好的理由移動到Windows Azure(便宜現有的應用程序是不是其中之一),那麼你就正在着手遷移策略的第一步。我建議,爲了這第一步,你儘可能少地改變,並簡單地「讓它工作」。在這種情況下,將SQL放在虛擬機上可能是最有意義的 - 如果沒有別的辦法,可以給予更多的控制權和迴旋餘地。在一切正在運行之後(遷移的第1步),您可以查看遷移的其他階段。步驟2至n意味着您的應用程序體系結構將發生顯着變化,使得更多地使用表存儲,並減少SQL。所以一步ñ - SQL的性能和/或可擴展性將不會是一個問題。

雲應用的數據模型比較複雜,需要慎重考慮。這是我在CALM的數據模型中詳細寫的。

不要驚慌。

如果您的應用程序有一個平凡的未來,然後共同LO託管的解決方案可能是最好的 - 在這裏你可以專門配置滿足您需求的數據庫服務器。如果您對應用程序抱有很高的抱負,那麼隨着時間的推移,您可以將其遷移到在Azure上運行良好的更具可擴展性和雲環境友好的體系結構中。

+0

感謝您的輸入西蒙。我同意我們很可能很早就解決問題。由於我們爲了顯示有用的報告而執行的所有聯接,我無法想象我們的應用在SQL提供的關係模型之外運行。無可否認,數據庫的很多部分都可以進入NOSQL表格,核心財務函數在SQL中運行。我們的產品服務於英國市場,所以我不認爲在Co-Lo環境中擴展是不可能的,我只是討厭所有相關的硬件問題!不過,我喜歡Azure的概念,並且在虛擬機上運行數據庫將成爲我的下一個測試場景。 – QFDev 2013-03-08 10:40:03

0

我會選擇#3。 SQL Azure的可能有點......不可預知其性能,具有性能敏感的查詢對大量數據

+0

我看到的虛擬機中唯一迫在眉睫的問題是成本。 1臺XL VM每月需要460美元!任何較小的東西都不會看起來好像它有足夠的內存。大型VM只有7GB內存......我認爲這可能是一個問題!? – QFDev 2013-03-07 16:39:52

+0

SQL Azure爲您的實例提供的RAM甚至更少。我相信SQL Azure服務器運行在8gig機器上,並支持多個租戶 – Igorek 2013-03-07 16:51:00

+0

但是,如果說5個節點能夠提供更好的性能並且價格還是四分之一,那麼就不會聯合DB。 – QFDev 2013-03-07 17:02:44

0

的處理,特別是當VM選項將是你最簡單的途徑,特別是如果你沒有達到你的應用程序做一些改變。

SQL Federations將需要對您的應用程序進行更改(USE FEDERATION)。

最重要的是,對於SQL Azure,您將必須考慮瞬態故障處理/限制。此外,您必須驗證所有你使用SQL Server中的現有功能完全支持(例如,部分支持TSQL,CLR支持,等等)

+0

感謝June,我們確實使我們的數據庫在Azure中運行得非常好。但是,我們模擬測試的節流和瞬態誤差只是從我們的測試中獲得最小的負載。關於虛擬機方法,我唯一的疑問是如何在時間到了時向外擴展? – QFDev 2013-03-07 15:54:29

+0

VM選項是簡單的入口點。同意從長遠來看,您將不得不重新考慮您的雲部署/體系結構。虛擬機選項會爲您帶來時間,同時讓您熟悉Azure技術。誰知道Azure SQL和Azure VM今年會有哪些改進? :)我敢肯定,MS並不坐在那裏,沒有考慮如何改進這些服務。 – JuneT 2013-03-08 10:27:55

+0

是的,我也會將其納入我的決策之中...... Azure正在快速發展,我可以看到,當試圖找到最新的指導。我認爲Azure會迫使我們變得更具資源性,這很吸引人! – QFDev 2013-03-08 10:44:10