2015-09-25 108 views
1

我正在開發一個使用SignalR管理websockets並允許我的客戶端相互對話的應用程序。關於Azure工作者角色的MongoDB

我打算在Azure工作者角色上託管這個後臺。由於我的SignalR請求攜帶大部分時間保存在數據庫中的數據,因此我想知道NoSQL的MongoDB而不是經典的SQL Server/Entity Framework對應是否是一種好方法。

假設我的應用程序的數據類型對於其中的大多數數據類型都是字符串,我認爲MongoDB將是一個可靠的高性能解決方案,它將允許我擺脫Azure的SQL數據庫成本。

有關信息,Azure工作者角色將在具有以下硬件的計算機上運行:1個核心CPU,3.5GB RAM和50GB SSD存儲。

你覺得我在這個建築的良好開端?

感謝

+0

在工作角色上運行的MongoDB實例或羣集的問題是機器是無狀態的。您不希望依賴主動節點和仲裁器 - 如果沒有其他問題,請考慮使用SaaS解決方案(MongoLab/MongoDB)。我已經很成功地爲MongoDB運行Azure虛擬機羣集,但我必須定期修補Linux映像。 –

回答

0

Azure中擁有自己的本土的NoSQL數據庫文件名爲DocumentDB,有你有我看看嗎?如果我是你,我會使用DocumentDB,除非你有一些你沒有提到的特殊需求,但是從你發佈的很少的需求信息DocumentDB可以做得很好。在基本功能方面,我不認爲它與MongoDB非常相似,請參閱this article for a comparison between Azure DocumentDB and MongoDB

+0

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Nullify

+0

@ 200OK查看我的更新。謝謝。 – 2015-09-25 12:43:10

+0

感謝您的回覆。我在尋找DocumentDB,它似乎僅限於10GB的存儲空間,並且涉及額外的成本。而我的工作人員角色提供的50GB固態硬盤空間更大,而且我沒有在只有websocket的情況下使用它。 – Rotan

2

你覺得我在這個建築的良好開端?

總之,沒有。

用戶詢問有關在工作角色上運行Redis的相似問題 - Setting up Redis on Azure cloud service worker role - 該Q/A上的所有內容都與MongoDb上下文相關。

我建議你閱讀我的回答,因爲它進入更多細節,但爲什麼這是一個糟糕的架構方法的概述:

  1. 當工人的角色將被重新啓動,你不能保證Azure服務結構。
  2. 在一個真實的Mongo實現中,你將運行一個集羣內的多個節點,並且只有一個工作者角色(就像你在問題中提到的那樣),這是不可能的。
  3. 將需要管理你的MongoDb安裝在工作者角色,他們根本不是爲此設計的。

如果您確實在使用Mongo,我建議您使用MongoLabs等託管解決方案(如前面的答案中所述),或考慮將其託管在Azure IaaS VM上。

如果您不是在使用Mongo,我會誠懇地建議您看看Azure DocumentDb(也是上面提到的),微軟的Azure NoSQL產品 - 我已經在多個生產系統中使用過它,它當然是一個有能力的NoSQL解;授予,它可能不具備MongoDb的所有功能。

如果您正在尋找用於緩存數據的NoSQL解決方案(即,不是長期存儲),我建議你看看Azure Redis Cache,這是一個非常強大的Redis產品。

相關問題