gpt4 book ai didi

java - 选择数据库服务 - mongohq vs dynamodb

转载 作者:IT老高 更新时间:2023-10-28 13:19:39 24 4
gpt4 key购买 nike

目前我正在收集我们应该使用什么数据库服务的信息。我对 Web 开发还很陌生,但我们认为我们想要一个 noSQL 数据库。

我们在 Play 中使用 Java! 2.

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

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

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

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

现在我们预计数据库使用量不会太多,但如果我们的应用增长,我们需要快速扩展。

我有什么选择?他们有什么优点/缺点?考虑:

  • 定价
  • 缩放
  • 易于使用
  • 玩!支持吗?

最佳答案

(披露:我是 MongoHQ 的创始人,显然希望你选择我们)

从开发人员的角度来看,最大的区别在于查询功能。在 DynamoDB 上,您需要给定文档的确切 key ,或者您需要以可以将它们用于基于范围的查询的方式构建 key 。在Mongo中可以查询文档的结构、添加二级索引、做聚合等。

仅使用 k/v 的优势在于,它迫使您以 DynamoDB 可以扩展的方式构建应用程序。 Mongo 对您的文档进行灵活查询的优势在于,您可以进行更快的开发,即使您不考虑 Play 框架包含的内容。使用 Mongo 之类的东西进行新开发总是会更快,因为您不必从一开始就做出扩展决策。

在实现方面,Mongo 和 DynamoDB 基本上都可以无限增长。 Dynamo 抽象出大部分关于存储、RAM 和处理器能力的决策。 Mongo 要求您(或像我们这样的人)决定拥有多少 RAM、使用哪种磁盘、如何管理瓶颈等。操作障碍不同,但最终结果非常相似。我们在非常快的 SSD 上运行多个 Mongo DB,它运行得非常好。

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

运行 Mongo 在成本方面更具可预测性。每 10GB 数据您可能需要 1GB 的 RAM,运行冗余设置会使您的价格翻倍,等等。这是一个更容易理解的方程式,如果您有一个巨大的一天的流量。

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

我在上面稍微提到了缩放,但最简单的答案是:如果您定义好数据模型,则任何一个选项都会向外按您想象的那样进行缩放去。不过,一开始你可能不会用 Mongo 做这件事,因为你可能会很快发展。这意味着一旦您无法再垂直扩展(通过向单个服务器添加 RAM、磁盘速度等),您将不得不小心选择分片的方式。 Mongo 和 Dynamo 扩展之间最大的区别是当你选择让你的“我如何扩展我的数据?”决策,而不是整体扩展能力。

所以我会选择 Mongo(呃!)。不过,我认为您可以在 DynamoDB 之上构建出色的应用程序。

关于java - 选择数据库服务 - mongohq vs dynamodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11741977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com