选择数据库服务 - mongohq vs dynamodb

时间:2012-07-31 14:04:33

标签: java mongodb playframework-2.0 amazon-dynamodb database

目前我正在收集有关我们应该使用的数据库服务的信息。 我仍然是Web开发的新手,但我们认为我们想拥有一个noSQL数据库。

我们正在使用Java与Play! 2。

我们只需要一个用户注册数据库。

现在我已经熟悉了GAE ndb,它是一个关键值存储,例如dynamoDB。 MongoDB是一个文档db。 我不确定每个解决方案有什么优势。

我也知道dynamoDB运行在SSD上,而mongoDB是内存的。

mongoDB的一个优点就是Java Play!已经“支持”mongodb。

现在我们不期望太多的数据库使用,但如果我们的应用程序增长,我们需要快速扩展。

我有哪些替代品?他们有什么利弊? 考虑到:

  • 定价
  • 缩放
  • 易用性
  • 播放!支持?

2 个答案:

答案 0 :(得分:12)

(披露:我是MongoHQ的创始人,显然更愿意选择我们)

与开发人员的观点最大的不同是查询功能。在DynamoDB上,您需要给定文档的确切密钥,或者您需要以可以将它们用于基于范围的查询的方式构建密钥。在Mongo中,您可以查询文档的结构,添加二级索引,进行聚合等。

仅使用k / v执行此操作的优势在于它会强制您以DynamoDB可扩展的方式构建应用程序。 Mongo灵活查询对您的文档的优势在于,即使您对Play框架包含的内容进行折扣,您也可以更快地进行开发。使用像Mongo这样的东西进行新的开发总是会更快,因为你不必从一开始就做出缩放决定。

实施明智,Mongo和DynamoDB都可以基本无限增长。 Dynamo对存储,RAM和处理器能力的大部分决策进行了抽象。 Mongo要求你(或像我们这样的人)决定要拥有多少RAM,使用什么样的磁盘,如何管理瓶颈等等。操作障碍是不同的,但最终结果非常相似。我们在速度非常快的SSD上运行多个Mongo DB,效果非常好。

遗憾的是,定价非常难以比较。 DynamoDB定价基于每GB标称费用,但您需要为数据访问付费。您需要确保了解随着数据库变得更加活跃,您的成本将如何增长。我不确定我能否有效地预测DynamoDB的定价,但我知道我们已经让客户感到惊讶(至少可以说)Dynamo最终会为他们想做的事情付出代价。

运行Mongo在成本方面更具可预测性。每10GB数据你可能需要1GB内存,运行冗余设置会使你的价格翻倍,等等。如果你拥有巨大的数据,这将是一个更容易理解的方程式,你不会感到非常讨厌。一天的交通量。

到目前为止,Mongo(和MongoHQ)的最大优势是:您可以随时离开您的提供商。如果你对你的Mongo提供商感到厌烦,那么迁移只会有点痛苦。如果你对亚马逊感到厌烦,你将不得不重写你的应用程序以使用完全不同的引擎。这对你应该获得的支持有很大的影响,托管Mongo足够有竞争力,你可以从你选择的任何Mongo特定公司获得非常好的支持(或者我们会死)。

我解决了一点上面的问题,但最简单的答案是:如果你很好地定义你的数据模型,任何一个选项都可以扩展 out ,只要你能想象你需要去。不过,你最初可能不会对Mongo这样做,因为你可能会很快发展。这意味着一旦您无法再垂直扩展(通过向单个服务器添加RAM,磁盘速度等),您将不得不小心选择如何进行分片。 Mongo和Dynamo扩展之间的最大区别在于您选择制作“我如何扩展数据?”决定,而不是整体扩展能力。

所以我选择了Mongo(呃!)。我认为你可以在DynamoDB上构建一个出色的应用程序。

答案 1 :(得分:1)

正如你所说,mongoDB在其他选项中领先一步,因为你可以使用morphia插件来简化数据库交互(你也有JPA支持)。 Play框架也提供CRUD模块(管理控制台)和安全模块(对于您的整体登录系统),因此我强烈建议您查看它们。