- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
目前我正在收集我们应该使用什么数据库服务的信息。我对 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/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在尝试从 Cocoa 应用程序连接到 mongohq 数据库,但我真的不知道从哪里开始。我用谷歌搜索了它,但它似乎在网上没什么用处。 你知道是否有一种简单的方法可以做到这一点? 显然没有人会为我编
目前我正在收集我们应该使用什么数据库服务的信息。我对 Web 开发还很陌生,但我们认为我们想要一个 noSQL 数据库。 我们在 Play 中使用 Java! 2. 我们只需要一个用于用户注册的数据库
我在heroku上有和应用程序 然后我决定创建另一个应用程序(在不支持 stack:migrate 的 cedar stack 上)。 如何迁移数据库 PG 和 MongoHq? 谢谢! 最佳答案 您
我是 Node.js 新手。 我想问一下,我们如何使用mongoose保存数据? 在本例中,我有 3 个文件夹来运行该过程 models(在此文件夹中我们有 store.js) var mongoos
我有一个 Web 应用程序,其生产数据在 Heroku 的 Cidar 堆栈上运行。生产数据存储在 MongoDB 中,我使用 MongoHQ 在生产中对其进行管理。我想将生产数据下载到我的本地计算机
我正在尝试将 Heroku 与 Mongo 一起用于 Express.js 项目。努力连接到mongohq。日志输出: connstring 是:mongodb://heroku:XXXXXXXXXX
有人可以提供有关使用托管数据库解决方案(特别是 MongoDB)和 Web 服务器的建议吗?具体来说: 延迟可以接受吗?如何将 Web 服务器与托管数据库服务器放在同一位置(通过 Azure 等在地理
我想在使用 meteor deploy 部署 Meteor 应用程序时使用我自己的 MongoHQ 数据库。 The documentation explains how to do this whe
当使用具有这些设置和代码的本地开发 MongoDB 时,我有一个有效的 Node.js 应用程序设置并且运行良好: var MongoDB = require('mongodb').Db; v
我想在我的应用程序中使用mongoHQviews.py中的部分代码: from pymongo import MongoClient def connect_db(): client = Mo
经过相当多的努力,我设法让我的 Rails 3.2 应用程序在 heroku 上运行。 running rails 3.2 / mongoid app on heroku fails 我已从 mong
尝试在 Heroku (MongoHQ) 上使用 Sinatra 启动和运行 Mongoid。以前有使用 Rails 的经验,但第一次使用堆栈和 Sinatra。 从网络上的一个简单示例 (app.r
我在 Heroku 安装了 mongohq:sandbox。当我想连接mongo时,出现错误: mongo linus.mongohq.com:10123/app10575123 -u my_user
如何使用 Breeze 从 MongoHQ 获取数据?到目前为止,我已经试过了: this.getDataFormServer = function (formElement) { $.aja
我刚刚开始了一个全新的 Rails 项目,我要完成的第一个任务是创建一个对象并将其保存在我的数据库中。我经历了生成对象的自动化方式,在本例中是一个 URL 对象,如下所示: rails generat
这只是为了我的周末项目/学习,我对 Sinatra 和 MongoDB 非常陌生。 我已经为 mongoDB 安装了 gem,例如:mongo、mongo_mapper 和 mongoid。 当我尝试
尝试直接访问 MongoHQ: > mongo mongodb://heroku:mypassword@alex.mongohq.com:10046/myapp MongoDB shell versi
我需要一些帮助将我的 node.js 应用程序(我正在 cloud9 中编辑)连接到 MongoHQ 的数据库。到目前为止,我已经通过终端成功连接到数据库,并且能够执行一些命令: use drywal
我们的应用程序(使用 sails 框架的 Node js)正在尝试访问位于 MongoHQ 上的 mongodb。当应用程序从本地系统运行时,它工作正常。但是一旦安装了应用程序,值就不会保存在 mon
我是一名优秀的程序员,十分优秀!