我猜他们都是文件商店。
所以SimpleDB是一个托管数据存储,带有用于操作数据的REST / SOAP API。 MongoDB是您在自己的硬件上运行的数据存储引擎,它使用一系列BSON命令来处理数据,但大多数用户运行supported drivers之一。
不同的事情:
- 配置(您需要服务器)
- 维护
- 客户端代码:您需要使用驱动程序运行,您的查询可能不同
- 索引
- 寻呼
- 可能是数据结构(不同的查询工具)
- Map / Reduces(使用MongoDB在Javascript中完成)
相同的事情:
- 数据:它们都是文档存储,应该能够处理相同的基本数据
理论上,您可以将数据从SimpleDB转储到MongoDB,但是对于数据的其他移动部分肯定会涉及一些工作。
所有这一切,我鼓励您测试MongoDB,因为您可能会发现它比SimpleDB提供了成本优势。
约翰尼,盖茨击中了所有亮点,我只是在这里添加了一些热门话题,如果你想这样做,希望能帮助你更快地做出决定:
- 您使用SimpleDB是因为您不想成为服务器管理员,恢复丢失的服务器,运行备份,确保主/从配置正常工作,或购买额外的硬件来运行数据库。
- 如果你使用Mongo,你将不得不做所有这些(除非你去MongoHQ route)但是支付灵活性和可能速度......有一个很大的“它取决于“这里。”
- SimpleDB有一个非常简单的(仅限字符串)存储和查询模型;如果您的数据/用例很简单,那么它就适合。
- SimpleDB横向扩展得非常好(同时有数千个查询),但垂直方向相当慢。因此,如果您计划让一些用户从您的数据存储中查询bejesus,请考虑其他事项;往返SimpleDB的往返旅行将加起来。但是,如果您正在尝试创建下一个Twitter并需要横向为数百/数千名用户提供服务,那么SimpleDB将在所有连接中为您提供相同的性能。
- 与Mongo水平缩放非常强大......但这也意味着它可能很复杂(超越Master / Slave,这非常简单)。副本集和仲裁者必须进入你的词汇表...考虑这是否是你想要的东西。
- Mongo的查询模型与使用NoSQL数据存储的SQL一样接近;它非常丰富。
- Mongo喜欢成为硬件上的唯一服务;如果你可以在Mongo上投入强大的硬件,那就像梦一样。
- 如果使用mongo,则需要在不同的计算机上运行至少两个实例。如果你不这样做,它将正常工作,直到它没有...然后你的世界将融化。如果你这样做,服务器崩溃,另一个将自动接管你。
所以我想如果我不得不总结一下:
- 如果您不想进入服务器管理游戏并且不介意更简单的查询模型,请使用SimpleDB。
- 如果您不介意具有良好习惯和/或需要复杂查询功能的专注管理员,请使用MongoDB。
希望有所帮助。