我们希望将 MongoDB 用于我们的数据库,并且我们希望使用 MongoDB API 来避免“锁定”到 Azure Cosmos DB 托管。
我们使用 .Net Core 和 MongoDB.Driver 包(以便能够在本地、Atlas、Azure Cosmos hsoting 等之间轻松切换)与 MongoDB 实例进行通信,到目前为止一切顺利。
为了能够处理 future 数据量的增长(大小和性能),我希望对我的集合进行分片。据我了解,Cosmos DB 使用的策略是使用分区键进行分区,但由于我们使用 MongoDB.Driver,我无论如何都找不到在我的查询中指定分区键。
“普通”MongoDB 改用分片,您可以设置一个文档属性,用作数据分片方式的分隔符。
因此,我的猜测是分片是可行的方法(因为 partionkeys 是 Cosmos 的一项功能),但我无法让它发挥作用。
Azure 门户中的“MongoDB shell”不理解 sh.shardCollection 命令,如果我从我的客户端连接到 MongoDB shell,我会收到以下错误:
globaldb:PRIMARY> use sampledatabase
switched to db sampledatabase
globaldb:PRIMARY> sh.shardCollection("sampledatabase.Event", { TenantId: 1 } )
2018-06-21T12:03:06.522+0200 E QUERY [thread1] Error: not connected to a mongos :
如何继续在 Azure Cosmos 中托管的 MongoDB 实例中启动和运行分片?
最佳答案
CosmosDB Mongo api 端点公开了一个启用了副本集的 MongoD 接口(interface),而不是 MongoS 接口(interface)。因此,您需要使用 db.runCommand 而不是“sh”分片命令来创建分片集合。
您可以在 https://learn.microsoft.com/en-us/azure/cosmos-db/partition-data#mongodb-api 找到更多详细信息
关于Azure Cosmos DB 中托管的 MongoDB : Sharding vs partitioning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50967735/
很多人都问过这个网站上的Rails托管,但我对事情的后端不够熟悉,不知道是否有区别。我想托管一些RubyCGI“网络服务”,基本上只是从POST请求获取参数、访问MySQL数据库并返回数据的ruby方法。我查看了RoR,它似乎有点矫枉过正,据我所知,它是为了加速基于数据的CRUD站点的开发,而这根本不是我正在做的事情。所以我的问题是,这会影响我选择的托管服务提供商吗?有人为CGI操作推荐一个好的Ruby主机吗?我不熟悉FastCGI、mod_ruby、Passenger、Mongrel等,也不熟悉它们对性能、可伸缩性等的意义。我只想以相当好的性能托管我的ruby脚本,那里(和这
我可以在一个Rails应用程序中同时使用MongoDB和PostgreSQL吗?具体来说,我最终会想要使用像MongoHQ这样的东西。到目前为止,我未能在实验中进行这项工作。令我担心的是,MongoDB文档特别指出我必须禁用ActiveRecord。任何建议将不胜感激。 最佳答案 您无需禁用ActiveRecord即可使用MongoDB。查看Mongoid只需将gem加上任何模型与您现有的任何ActiveRecord模型一起添加。您应该注意到MongoHQ只是MongoDB的托管服务,可以与任何对象文档映射器(ODM)一起使用。更多
我必须在mongoid模型中添加几个字段,我知道MongoDB没有迁移,但如果我继续而不删除数据库,使rails完全“重新生成”数据库,它不会显示或使用新的领域!去这里最好的方法是什么?有比删除/重新打开mongodb更软的东西吗?提前致谢卢卡 最佳答案 一般来说,应该可以在运行时用新字段更新旧文档。MongoDB中不需要迁移。您可能想编写rake任务以使用新字段和默认值更新旧文档。您可以通过检查那些默认值为nil的新字段来找到这些文档。更新简单风格:如果您使用默认值定义一个新字段,只要您设置了一个新值,就应该始终使用该值:应用程序
我正在使用Stripemanagedaccounts,我可以毫无问题地创建和检索帐户,但我无法将信用卡添加到任何Stripe帐户。我正在使用Stripe.js为了处理卡片创建过程,所以在View中我收集卡片字段并让Stripe.js完成验证和处理的肮脏工作。如果一切正常,我会从Stripe收到一个stripeToken,它在我的Controller中用于最终关联托管帐户和信用卡。但是我收到这个错误:创建卡时出错:(状态400)在将卡添加到Stripe帐户时,您必须提供一张设置了“货币”字段的卡。因此我假设我需要在Card表单中添加currency字段,所以我再次尝试,然后我遇到了这个错
我如何从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客户端控制台进行查询,它会工作,我会得到结
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭9年前。Improvethisquestion我读到RubyGems实际上是gems的托管。我在GitHub上托管我所有的Rails项目。所以我的问题是:是否有任何理由将我的gem托管在GitHub而不是RubyGems上?RubyGems是否有像GitHub这样的私有(private)存储库?我听说珠宝商很擅长制作gem骨架。在他们的网页上,听起来像是将这些gems上传到GitHub而不是RubyGems。但是GitHub不是取消了对Gem的支持吗
我一直在寻找托管服务,但我仍然不知道哪种数据库最常见。好像是MySql和PostgreSql。所以,我不确定我的网站会有多少流量和数据(这只是一个项目),但我想做好准备。我曾在Oracle(PL/SQL)的一些项目中工作过,我对MySql有所了解。谢谢!附言。4年后,我主要使用PostgreSQL编写RoR。当我需要简单的应用程序时默认使用SQLite,否则使用PostgreSQL。 最佳答案 Rails的一个原则是你不应该真正关心你使用的是什么数据库:这些都是为你抽象的。所以我会说选择总体上最好的托管服务提供商,并相信他们会选择一
我启动了一个使用AmazonS3进行图像托管的示例应用程序。我设法哄它开始工作。该应用程序托管在github.com.该应用程序允许您使用个人资料照片创建用户。当您上传照片时,Web应用程序会将其存储在AmazonS3而不是您的本地文件系统上。(如果您在heroku.com托管,则非常重要)但是,当我在页面的浏览器中执行“查看源代码”时,我注意到图片的URL是我分配给应用程序的S3存储桶中的AmazonS3URL。我剪切并粘贴了URL,并且能够在同一个浏览器和另一个浏览器中查看图片,在该浏览器中我没有打开我的Web应用程序或AmazonS3的session。有什么方法可以限制对该URL