MongoDB - 分片方法

MongoDB - 分片方法 首页 / MongoDB入门教程 / MongoDB - 分片方法

sh.addShard(<url>)

在任何分片群集中,无涯教程都可以使用此方法向其中添加分片副本集。 add shard方法始终在mongos实例上运行。

示例:  必须指定副本集和主机名。如果您为副本集的任何一个成员指定其他主机名,那么如果无涯教程指定任何其他主机名,则所有主机名都必须与同一副本集相关。

下面的示例添加了一个名为replJTP的副本集,并且还指定了副本集的一个成员:

sh.addShard("replJTP/mongodb3.example.net:27327")

sh.addShardTag(shard,tag)

此方法用于返回SH.AddShardTozone()并将分片ID分配给每个分片。指定的函数仍然适用于MongoDB 3.2。但在MongoDB 3.4中,它为标签感知分片的提供区分片。

示例:以下示例添加了三个标记: Java MongoDB Python ,分为三个分片:

sh.addShardTag("shard0000", "Java")
sh.addShardTag("shard0001", "MongoDB")
sh.addShardTag("shard0002", "Python")

sh.enableSharding(db,primaryShard)

顾名思义,该方法用于为参数中的指定数据库启用分片。当无涯教程为任何数据库启用分片时,无涯教程可以使用sh.shardCollection()方法对指定数据库的集合进行分片。此方法包装enableSharding命令。

语法

sh.enableSharding(
   <database>,
   <primary shard> 
)

示例

以下示例为从mongos运行的JTP数据库启用分片:

sh.enableSharding("JTP")

sh.startBalancer(timeout,interval)

此方法用于分片群集在指定的时间和间隔内启动平衡器。可以使用此方法为分片群集启用自动拆分选项。此方法还是balencerStart命令的包装。即要开始平衡,该方法不会等待。

链接:https://www.learnfk.comhttps://www.learnfk.com/mongodb/mongodb-sharding-methods.html

来源:LearnFk无涯教程网

sh.stopBalancer(timeout,interval)

停止平衡方法用于禁用分片群集中正在运行的平衡器。可以使用此方法删除对指定分片群集的自动拆分。如果在mongod实例上运行,sh.stopBalancer()方法将返回错误,无涯教程只能在mongos实例上运行它。

convertShardKeyToHashed(<Object>)

该方法返回在参数中指定的输入对象的哈希值。该方法将指定的分片键转换为使用哈希索引所使用的类似哈希函数的哈希方法。同样,对于参数中的特定键,该方法可用于查看哈希值是什么。

示例:考虑一个使用散列碎片键[1]的分片集合

use JTP
db.orders.createIndex( { _id: "hashed" } )
sh.shardCollection( "JTP.tutorial", { _id : "hashed" } )

如果集合中存在以下文档,则_id字段的哈希值用于分发文档:

{
  _id: ObjectId("5b2be413c06d26ff9ca"),
  "item" : "Java",
  "qty" : 25
}

sh.updateZoneKeyRange(<namespace>,<minumum>,<maximum>,<zone>)

将范围的分片键值范围与区域关联。该方法的助手sh.updateZoneKeyRange()和sh.addTagRange()可以在数据库命令和未分片的集合上运行此方法。具有下限和上限重叠的分片键值范围不能借助分片集合的现有范围来创建。

让无涯教程举一个例子,无涯教程现有一个10到20个键值的范围。无涯教程无法创建15到30的新范围,因为新范围将与现有范围重叠。

示例

无涯教程在下面的示例查询中有一个分片集合,即分片键为{t:10}的learnfk.collection。它创建一个范围,其下限为10,上限为20,位于alpha区域:

sh.updateZoneKeyRange(
   "learnfk.collection",
   { t : 10 },
   { t : 20 },
   "alpha"
)

现在,通过将null传递到区域字段,下面的操作删除了先前创建的范围。

sh.updateZoneKeyRange(
   "learnfk.collection",
   { t : 10 },
   { t : 20 },
   null
)

目标范围的边界必须与最小值和最大值匹配。以下查询尝试删除旧范围,但将{t:0}指定为最小范围:

sh.updateZoneKeyRange(
   "learnfk.collection",
   { t : 0 },
   { t : 20 },
   null
)

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Java核心技术面试精讲 -〔杨晓峰〕

SQL必知必会 -〔陈旸〕

接口测试入门课 -〔陈磊〕

分布式协议与算法实战 -〔韩健〕

SRE实战手册 -〔赵成〕

Vim 实用技巧必知必会 -〔吴咏炜〕

成为AI产品经理 -〔刘海丰〕

操作系统实战45讲 -〔彭东〕

后端工程师的高阶面经 -〔邓明〕

好记忆不如烂笔头。留下您的足迹吧 :)