Mongodb分片集合(?



分片机中是否可以有不同的集合?例如节点A有集合:rolesA,节点B集合角色B等等,mongo路由器要为我的代码透明地处理。换句话说,要查询角色 A,而不需要知道它是否存储到节点 A?

我问的原因是 a 有一个大约 100GB 的大集合,所以我必须选择:

  1. 要对大型集合进行分片,假设为 5 个节点
  2. 在单个节点中将大型集合拆分为 10K 集合

我的查询$sum聚合。现在我正在使用第二个 approace,因此每个聚合查询只使用一个集合。到目前为止,性能很好<1 秒,但在生产环境中,CPU 始终为 100% 用方法 1.负载将由我担心响应时间来平衡

片机中是否可以有不同的集合?

在分片集群中,数据库可以具有多个分片和非分片集合。您可以决定需要对哪些集合进行分片(跨分片分布集合的数据(。集合基于分片键进行分片。分片键确定集合数据在分片之间的分布方式。分片键在读取操作性能中也很重要。

例如节点 A 要有集合:角色 A,节点 B 集合角色 B 等。.

您不能指定将特定集合的数据存储在特定分片上。分片是关于在多个分片之间分配集合的数据。

。为我的代码透明处理的 MONGO 路由器。

mongos(路由器(在路由到特定分片之前接收分片集群中的所有查询。当您提交查询时,就像将查询提交到独立服务器一样,语法相同;它对应用程序(或代码(是透明的。路由器确定查询必须访问哪些分片才能获取数据。

如果查询的筛选条件具有分片键,则路由器将确定要作为目标的特定分片(如果查询筛选条件中没有分片键,则查询将路由到集群中的所有分片(。

  1. 要对大型集合进行分片,假设为 5 个节点

您可以将大型集合的数据分布在具有 5 个分片的集群中(或随着数据的增长而分布更多 - 这称为水平扩展(。


最后,我试图回答你关于分片的一些问题。另外,请浏览下面的参考链接以获取完整信息。

引用:

  • 优点 分片
  • 分片前的注意事项
  • 分片策略
  • 常见问题解答:使用 MongoDB 进行分片

最新更新