2011-05-03 50 views

回答

0

約翰尼,門的打所有的亮點,我只是將一些熱點話題項目在這裏,希望能幫助你決定更快,如果你想這樣做或不:

  • 您使用SimpleDB的,因爲你不想成爲服務器管理員,恢復丟失的服務器,運行備份,確保主/從配置正在工作,或購買額外的硬件來運行數據庫。
  • 如果你使用Mongo,你必須做所有這些(除非你去MongoHQ route)但是回報的靈活性和可能的速度......這裏有一個很大的「取決於」。
  • SimpleDB有一個非常簡單的(僅限字符串)存儲和查詢模型;如果你的數據/用例很簡單,那就適合了。
  • SimpleDB水平伸縮得非常好(同時有數千個查詢),但垂直方向相當緩慢。因此,如果您計劃讓少數用戶從數據存儲庫中引導bejesus,請考慮其他方面的問題;往返於SimpleDB的往返次數將加起來。但是,如果您正在嘗試創建下一個Twitter,並且需要爲成百上千的用戶提供水平服務,那麼SimpleDB將在所有連接中爲您提供相同的性能。
  • 與Mongo水平縮放非常強大...但這也意味着它可能很複雜(超越主/從,這非常簡單)。複製品集和仲裁者必須進入你的詞彙量......考慮如果這是你想要的東西。
  • Mongo的查詢模型與您將要用NoSQL數據存儲獲得的SQL近似;它非常豐富。
  • Mongo喜歡成爲硬件上的唯一服務;如果你可以在Mongo上投擲健壯的硬件,它就像一場夢。
  • 如果你使用mongo,你需要在不同的機器上運行至少兩個實例。如果你不這樣做,它會正常工作,直到它不......然後你的世界將會融化。如果你這樣做,並且服務器崩潰,另一個會自動替你接管。

所以我想,如果我不得不總括起來:

  • 使用SimpleDB的,如果你不想要進入服務器管理員的遊戲,不要介意簡單的查詢模型。
  • 如果您不介意做一個有良好習慣和/或需要複雜查詢功能的周到管理員,請使用MongoDB。

希望有幫助。

0

我猜他們都是文件商店。

因此SimpleDB是一個託管數據存儲,具有用於操作數據的REST/SOAP API。 MongoDB是一個數據存儲引擎,您可以在自己的硬件上運行它使用一系列BSON命令來處理數據,但大多數用戶運行supported drivers之一。

事情會有所不同:

  • 配置(你需要服務器)
  • 維護
  • 客戶端代碼:你需要與驅動程序運行時,你的查詢可能是不同的
  • 索引
  • 尋呼
  • 可能的數據結構(不同的查詢工具)
  • 地圖/減少(在Javascript中完成與MongoDB的)

東西,這將是相同的:

  • 的數據:它們都爲文件存儲,應該能處理相同的基本數據

從理論上講,你可以將你的數據從SimpleDB轉儲到MongoDB,但是肯定會有一些移動的部分你的數據。所有這一切,我鼓勵你測試MongoDB,因爲你可能會發現它比SimpleDB提供了成本優勢。

+0

好點,我打算將它用作我iphone應用程序的後端,但ios更新時間會影響驅動程序更新,如果稍後我選擇切換,那麼可能會嘗試MongoDB。謝謝。 – Johnny 2011-05-03 20:37:18

+0

如果你打算從你的iPhone應用程序直接連接到MongoDB(或任何其他數據存儲,就此而言),你應該重新考慮你的方法。你將如何實現身份驗證?數據驗證?訪問控制?在我看來,無論您使用哪種後端存儲,您都需要一個「中間層」(帶有OAuth或HTTP摘要/ SSL的Web應用程序將很好地完成)來執行應用程序的限制。 – dcrosta 2011-05-03 21:45:16