我只是好奇,有一些像MongoLab這樣的服務,其中數據託管在遠程服務器上。任何使用數據庫的人都知道,即使所有服務器都是內部的,也存在一定程度的網絡延遲。像MongoLab這樣的遠程數據存儲服務是生產環境的一個好主意嗎?Mongolab和網絡延遲?
此問題主要針對基於AJAX的網絡應用程序或網站。
我只是好奇,有一些像MongoLab這樣的服務,其中數據託管在遠程服務器上。任何使用數據庫的人都知道,即使所有服務器都是內部的,也存在一定程度的網絡延遲。像MongoLab這樣的遠程數據存儲服務是生產環境的一個好主意嗎?Mongolab和網絡延遲?
此問題主要針對基於AJAX的網絡應用程序或網站。
我發現MongoLab很不錯。顯然,你需要考慮一般的往返行程,優化這些行程可以最大限度地減少整體延遲。
將自己置於與MongoLab相同的數據中心(您可以選擇位置)也很有意義。他們現在還在Azure上提供(測試版)服務。
我一直在運行高延遲的服務(瀏覽器三種不同的地理區域,Web服務器和蒙戈,它仍然是因爲我的相互作用不是「饒舌」在我的情況下,充分執行。
正如你可能知道,Mongo的一個設計約束是缺少連接,所以我的數據結構自然而然地適用於簡單的Q &提取數據。我不讀取一個集合,然後使用該信息去查看另一個集合手動連接),因此,我並沒有在這些複雜的交互中加入延遲成本,最糟糕的情況通常是單個請求/響應(或一系列並行的單一請求/響應查詢),所以它的差別在於總共200ms是可以接受的。
但是,當然,越接近你的網絡服務器到你的數據庫越好。
想必如果你花足夠的錢,MongoLab等人可能會推出一個自定義配置,可能在哪裏你可以有本地輔助。
我很感謝答案。只是好奇,您使用MongoLab多久了?至於缺少連接,我採取了「非規範化」的方法,其中每個文檔都包含描述該對象的所有必要數據。你看到有什麼問題嗎? (我知道這真的是它自己的問題,但是你打開了你的連接評論=))。 – StackOverflowed
約6個月在AWS上,Azure上最後一個月或兩個月(2.2測試版)。您的非規範化方法對於Mongo來說是相當的教科書,我認爲這將有助於減少整體延遲。儘管如此,只要您的查詢不依賴於彼此的結果,您仍然可以執行多個並行查詢,即使是來自不同的問題。這就是我至少發現的。例如,一個通用的過濾器查詢可能是一個DACL。您不希望首先查詢用戶集合。相反,請爲所有文檔標記該用戶的權限,並將該用戶用作並行篩選器鍵。 – cirrus