MST

星途 面试题库

面试题:MongoDB中如何基于标签进行数据分发策略的配置

假设你在一个分布式MongoDB集群环境中,需要根据数据的不同业务类型标签,将数据分发到不同的分片上存储,简述具体的实现步骤和涉及到的关键配置项。
49.9万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

实现步骤

  1. 确定业务类型标签:明确不同业务类型所对应的标签,例如订单数据标签为“order”,用户数据标签为“user”等。
  2. 选择分片键:根据业务特点选择合适的分片键,该分片键要与业务类型标签紧密相关。例如,如果以业务类型标签作为分片依据,可直接将标签字段作为分片键;若业务数据有时间属性,也可结合业务类型标签和时间字段组成复合分片键。
  3. 启用分片集群:在MongoDB配置服务器、分片服务器和路由服务器上进行相关设置,启动MongoDB分片集群。
  4. 创建数据库和集合:在路由服务器上通过mongo shell创建需要使用的数据库和集合。
  5. 标记集合进行分片:使用sh.shardCollection()方法标记要进行分片的集合,并指定分片键。例如,假设集合为myCollection,分片键为businessType(业务类型标签字段),命令为sh.shardCollection("myDb.myCollection", {businessType: 1})
  6. 添加标签和范围规则
    • 使用sh.addShardTag()为每个分片添加标签,例如sh.addShardTag("shard0000", "order")表示给shard0000分片添加“order”标签。
    • 使用sh.addTagRange()指定不同业务类型标签对应的数据范围与分片标签的映射关系。例如,对于业务类型标签为“order”的数据,命令为sh.addTagRange("myDb.myCollection", {businessType: "order"}, {businessType: "order"}, "order"),这样带有“order”业务类型标签的数据就会被分发到标记为“order”的分片上。

关键配置项

  1. 分片服务器配置shardsvr选项用于标识该节点为分片服务器,需配置数据存储路径等相关参数。例如:
storage:
  dbPath: /var/lib/mongodb-shard1
  1. 配置服务器配置configsvr选项标识该节点为配置服务器,同样要配置数据存储路径。例如:
storage:
  dbPath: /var/lib/mongodb-config1
  1. 路由服务器配置:路由服务器即mongos进程,通过--configdb选项指定配置服务器的地址。例如:
mongos --configdb configReplSet/192.168.1.100:27019,192.168.1.101:27019,192.168.1.102:27019
  1. 分片键相关配置:在shardCollection命令中指定的分片键,它决定了数据如何在分片中分布。
  2. 标签相关配置addShardTagaddTagRange命令中的标签设置,决定了业务类型标签与分片的对应关系。