我正试图弄清楚我可以在未来的项目中使用什么,我们计划在第一年每月存储大约 50 万条记录, future 几年可能会更多。这是一个垂直应用程序,因此无需使用为此需要一个数据库,这就是我决定选择 NoSQL 数据存储的原因。
我想到的第一个选项是 mongo DB,因为它是一个非常成熟的产品,得到了社区的大力支持,但另一方面,我们得到了一个全新的产品,它提供了顶级性能的托管服务,我'将开发此应用程序,但没有维护计划(至少目前如此),所以我认为这将是一个巨大的优势,因为亚马逊提供了一种弹性的扩展方式。
我主要关心的是查询结构,我还没有研究过 dynamo DB 查询功能,但由于是 k/v 数据存储,我觉得这可能比 mongo DB 更受限制。
如果有人有将项目从 MongoDB 迁移到 DynamoDB 的经验,任何建议都将不胜感激。
最佳答案
我知道这是旧的,但是当您搜索比较时它仍然会出现。我们使用的是 Mongo,几乎完全迁移到了 Dynamo,这是我们现在的首选。不是因为它有更多的功能,它没有。 Mongo 有更好的查询语言,你可以在一个结构中索引,有很多小东西。 Dynamo 的优势在于 OP 在他的评论中所说的:这很容易。您不必照顾任何服务器。当您开始设置 Mongo 分片解决方案时,它会变得复杂。您可以去其中一家托管公司,但这也不便宜。使用 Dynamo,如果您需要更高的吞吐量,只需单击一个按钮。您可以编写脚本以自动扩展。当需要升级 Dynamo 时,它已经为您完成了。那是很多宝贵的压力和没有花费的时间。如果您没有专门的运维人员,Dynamo 非常好。
所以我们现在默认使用 Dynamo。 Mongo 可能,如果数据结构足够复杂以保证它的存在,那么我们可能会回到 SQL 数据库。 Dynamo 是迟钝的,你真的需要考虑如何构建它,并且很可能你会在 Elasticcache 中使用 Redis 来使它适用于复杂的东西。但不必照顾它肯定很好。你编码。而已。
关于mongodb - DynamoDB 与 MongoDB NoSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931073/
根据AWSDocs:Anupdateexpressionconsistsofoneormoreclauses.EachclausebeginswithaSET,REMOVE,ADDorDELETEkeyword.Youcanincludeanyoftheseclausesinanupdateexpression,inanyorder.However,eachactionkeywordcanappearonlyonce.我无法在一个update_expression中获得正确的SET和REMOVE语法:params={key:{'id'=>{s:'123'}},table_name:'c
亚马逊的documentation提供有关如何使用DynamoDBLocal的Java、.NET和PHP示例。你如何用AWSRubySDK做同样的事情??我的猜测是你在初始化时传入了一些参数,但我不知道它们是什么。dynamo_db=AWS::DynamoDB.new(:access_key_id=>'...',:secret_access_key=>'...') 最佳答案 您使用的是SDK的v1还是v2?您需要找出答案;从上面的简短片段来看,它看起来像v2。为了以防万一,我已经包含了这两个答案。v1答案:AWS.config(us
我似乎无法理解DynamoDB的AWSRubySDK文档(或者更具体地说,DynamoDB数据模型的概念)。具体来说,我一直在阅读:http://docs.aws.amazon.com/AWSRubySDK/latest/frames.html#!AWS/DynamoDB.htmlNote:IhavereadthroughtheDataModeldocumentationaswellandit'sstillnotsinkingin;I'mhopingaproperexampleinRubywithclearupmyconfusion在下面的代码片段中,我创建了一个名为“my_books
我可以在一个Rails应用程序中同时使用MongoDB和PostgreSQL吗?具体来说,我最终会想要使用像MongoHQ这样的东西。到目前为止,我未能在实验中进行这项工作。令我担心的是,MongoDB文档特别指出我必须禁用ActiveRecord。任何建议将不胜感激。 最佳答案 您无需禁用ActiveRecord即可使用MongoDB。查看Mongoid只需将gem加上任何模型与您现有的任何ActiveRecord模型一起添加。您应该注意到MongoHQ只是MongoDB的托管服务,可以与任何对象文档映射器(ODM)一起使用。更多
我必须在mongoid模型中添加几个字段,我知道MongoDB没有迁移,但如果我继续而不删除数据库,使rails完全“重新生成”数据库,它不会显示或使用新的领域!去这里最好的方法是什么?有比删除/重新打开mongodb更软的东西吗?提前致谢卢卡 最佳答案 一般来说,应该可以在运行时用新字段更新旧文档。MongoDB中不需要迁移。您可能想编写rake任务以使用新字段和默认值更新旧文档。您可以通过检查那些默认值为nil的新字段来找到这些文档。更新简单风格:如果您使用默认值定义一个新字段,只要您设置了一个新值,就应该始终使用该值:应用程序
我如何从Ruby代码连接到mongodb? 最佳答案 首先,您必须安装MongoDbgem:geminstallmongo然后运行代码:require'rubygems'#notnecessaryforRuby1.9require'mongo'db=Mongo::Connection.new.db("mydb")#ORdb=Mongo::Connection.new("localhost").db("mydb")#ORdb=Mongo::Connection.new("localhost",27017).db("mydb")
我正在尝试使用聚合框架(使用ruby)并像这样投影日期:db['requests'].aggregate([{"$project"=>{_id:0,method:'$method',user:'$user',year:{'$year'=>'$timestamp'}}}])文档是这样的:{_id:ObjectId("5177d7d7df26358289da7dfd"),timestamp:ISODate("2013-04-12T03:58:05+00:00"),method:"POST",status:"200",inputsize:"874",outputsize:"4981",u
我试图通过在Ruby中进行的查询从MongoDB获取字段的子集,但它似乎不起作用。它不返回任何结果这是ruby代码:coll.find("title"=>'Halo',:fields=>["title","isrc"])#thisdoesn'twork如果我删除字段散列,它会工作,返回包含所有字段的结果coll.find("title"=>'Halo')#thisworks查看mongodb控制台,第一个查询在mongodb服务器上结束,如下所示:{title:"Halo",fields:["title","isrc"]}如果我尝试从mongo客户端控制台进行查询,它会工作,我会得到结
文章目录Elasticsearch和MongoDB对比关于ElasticsearchElasticsearch应用场景关于MongoDBMongoDB优点mongodb适用场景Elasticsearch和MongoDB对比Elasticsearch和MongoDB开源许可协议参考Elasticsearch和MongoDB对比关于Elasticsearch官网:https://www.elastic.co/cn/elasticsearch/Elasticistheleadingplatformforsearch-poweredsolutions.Weaccelerateresultsthatma
我正在使用NodeJS的aws-sdk与DynamoDB表进行交互。这是我第一次了解DynamoDB。当使用像getItem()或updateItem()这样的调用时,数据结构包括类型,如下所示:{'a':{S:'Mystring'}}有没有办法在没有类型的情况下传递和接收这些对象……?所以……{'a':'Mystring'}或者,任何已经编写的辅助函数将对象与这种格式相互转换......?constdata=dbToObj({'a':{S:'Mystring'}})//{'a':'Mystring'}所以我可以在填充调用参数时转换为它,并在接收数据时从它转换。试图避免像这样访问我的数