mongodb分片机集合(?

问题描述 投票:0回答:1

是否可以在shard化的机器中拥有不同的集合?例如节点A有集合:角色A,节点B有集合角色B等一个。不过 的Mongo路由器来处理 透明 的代码。换句话说,要查询角色A而不需要知道它的存储在节点A上?

我问这个问题的原因是,我有一个大约100GB的大集合,所以我有选择。

  1. 要把这个大的集合碎片化,比如说变成5个节点。
  2. 在一个节点中,要把大的藏品拆成10K的藏品。

我的查询是$sum聚合。现在我使用的是第二种方法,所以每个聚合查询正好使用一个集合。该perfomance是到目前为止良好的< 1秒,但在生产环境中的CPU总是100%的方法1。

database mongodb performance mongoose sharding
1个回答
0
投票

在sharded机器中可以有不同的集合吗?

在一个sharded集群中,一个数据库可以有很多sharded和unsharded的集合。你可以决定哪些集合需要被分片(将一个集合的数据分布在不同的分片上)。一个集合的碎片化是基于 碎片钥匙. Shard key决定了采集数据如何在碎片上进行分配。Shard key对读取操作的性能也很重要。

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

你不能指定某个集合的数据存储在特定的shard上。Sharding是关于将一个集合的数据分布在多个shard中。

...mongo路由器为我的代码透明地处理。

A mongos (路由器)接收分片集群中的所有查询,然后再路由到特定的分片。当你提交查询时,就像向独立服务器提交查询一样,语法是一样的;它对应用程序(或代码)是透明的。路由器决定查询必须访问哪些shard来获取数据。

如果你的查询的过滤条件有shard键,那么路由器将决定特定的shard(s)为目标(如果查询过滤条件中没有shard键,查询将被路由到集群中的所有shard)。

  1. 要对大型集合进行shard,比如说5个节点

你可以用5个分片(或随着数据的增长而更多--这被称为水平扩展)在集群中分发一个大型集合的数据。


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

参考资料。

© www.soinside.com 2019 - 2024. All rights reserved.