2011-05-03 47 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