jjzjj

sharding

全部标签

如果选择标记分片键,MongoDB 仅将数据存储到主分片

我正在使用mongodbv3.0并尝试使用标记分片进行分片。文档mongodbv3.0documentation展示了如何配置它。我有2个分片:mongos>sh.addShardTag("shard0000","USA")mongos>sh.addShardTag("shard0001","EU")分片的集合是test_collection:mongos>db.printShardingStatus()---ShardingStatus---shardingversion:{"_id":1,"version":3,"minCompatibleVersion":3,"currentVe

mongodb - 两个数据中心,连接中断,都继续写入,连接返回,同步?

我们有两个数据中心,并且正在从两个数据中心向Mongo写入数据。集合是分片的,我们在数据中心A中有一个分片的主分片,在数据中心B中有另一个分片的主分片。偶尔,数据中心之间的连接会失败。我们希望能够在两个数据中心继续写作。我们正在写入的数据不会冲突-它们都只是添加文档,或者更新不会在两个地方更新的文档。然后,当连接恢复时(有时在几秒钟内,甚至几分钟内),我们希望数据库能够很好地应对这种情况并自动更新所有数据。有人可以建议这是否可行吗?在文档中并没有太多说明当您将副本集划分为两个独立的数据库时会发生什么,然后让它们都成为主数据库,直到您重新连接它们。怎么了?我该如何设置?

mongodb - mongodb 中的自定义范围分片键

我有一个配置了3个分片的mongodb,每个分片有3个副本,这些副本位于3个物理服务器上。我正在尝试获取每个分片上特定日期范围的数据;即我想要一个分片上最近3天的数据,第二个分片上最近6天到3天的数据,第三个分片上的所有其他数据。是否可以像那样手动定义分片键范围?提前致谢。 最佳答案 您可以使用标签感知分片。http://docs.mongodb.org/manual/core/tag-aware-sharding/这将允许您向分片添加标签,然后定义标签的范围。 关于mongodb-mo

mongodb - 在 mongodb 中分片的情况下排序

当我们根据散列分片键将集合分片到两个mongod分片时,我在mongodb中实现了分片,因此它在分片内进行并行排序。之后,它如何根据_id对集合进行排序?其他的考虑点是什么?什么是:哈希分片键的限制?mongo查询路由器使用什么排序程序对从分片中获取的记录进行排序?是否会因为网络延迟影响查询? 最佳答案 不确定。如果您不指定排序,mongo将从分片循环返回记录,我认为这意味着不能保证任何特定的排序,甚至不能保证从一个查询到另一个查询的可重现顺序。如果您有显式排序,则主分片将执行合并排序。查看mongosdocs当然可以。(这是一个老

mongodb - Mongodb 嵌套分片键

我有一个关于Mongo分片键的问题。我的文档结构如下:{"payload":{"id":"364e1f2c-6d4c-45fb-af19-841149286d67","name":"John",},"source":"myApp","version":"1.0","additionalInfo":{"time":"2012-04-18T17:32:11+03:00"}}我希望我的分片键为:payload.name和additionalInfo.time。以下命令因语法错误而失败:db.runCommand({shardcollection:"collection.table",key:

mongodb - 多个分片键是否有助于提高 mongodb 的性能?

由于分片数据库使用分片键来拆分块和路由查询,所以我认为更多的分片键可能有助于使更多的查询更有针对性我试过像这样指定多个键db.runCommand({shardcollection:"test.users",key:{_id:1,email:1,address:1}但我不知道它是否有效以及这样做的缺点是什么 最佳答案 这里要明确一点,你只能有一个分片键。所以你不能有多个分片键。但是,您建议使用compoundindex作为片键。这是可以做到的,但有一些限制。例如_id、email和address的组合必须是唯一的。choosinga

mongodb - 在 ShardingTest 中设置小文件

我知道有一个ShardingTest()对象可用于创建测试分片环境(参见https://serverfault.com/questions/590576/installing-multiple-mongodb-versions-on-the-same-server),例如:mongo--nodbcluster=newShardingTest({shards:3,rs:false})但是,考虑到我的测试机器中的磁盘空间有限,并且在使用上述命令时出现“日志文件的可用空间不足”错误,我想设置smallfiles选项。我尝试了以下但没有成功:cluster=newShardingTest({s

mongodb - 位置坐标作为 MongoDB 中的分片键

是否可以将纬度和经度坐标作为mongoDB中具有地理空间索引的集合中的分片键?如果没有,您能否建议任何有效的方法来根据位置在应用程序服务器上计算分片键? 最佳答案 不可能使用地理空间索引作为分片键索引。请参阅此处的“重要”注释:http://docs.mongodb.org/manual/core/2d/#d-indexesImportant;Youcannotusea2dindexasashardkeywhenshardingacollection.However,youcancreateandmaintainageospatia

mongodb - db.collection.count() 为 MongoDB 中的分片集合返回更多文档

我有2个带有复制集的分片(每个分片3个实例)。当我在分片集合上执行count()时,我得到的文档数量远远超过实际数量(超过250万个文档差异)。当我在forEach()循环中执行find()和递增计数器时也是如此。我怎么知道文件的真实数量?首先,我知道增加的趋势,即不能增加得那么猛。其次,当我使用以下M/R脚本对文档进行计数时,我得到了真实数量的文档(正如我所假设的)。我使用这个脚本来查看重复的文档。重复的数量是几千而不是几百万。test_duplicate_collection减去重复项的计数为我提供了真实数量的文档。varmap=function(){emit(this.doc_i

Mongodb - 分片和非分片集合

我对它的工作原理有点困惑。在对MySQL进行分片时,我们在每个分片中都有一些表,通常是带有引用数据的小表。这是为了启用连接。如果我们在MongoDB中有小集合,我们不在分片设置中分片,它们会怎样?它们是被发送到每个分片,还是只留在第一个分片中?如果具有许多应用程序服务器的高度分片系统中的所有进程都在一台服务器上运行,我认为这可能是一个潜在的瓶颈。 最佳答案 在具有自动分片功能的MongoDB中,分片集合将以某种方式均匀分布在您拥有的所有分片上。对于那些您不太可能分片(未分片)的集合,您可以指定primaryshard他们将居住在哪个