Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb-分片和非分片集合_Mongodb_Sharding - Fatal编程技术网

Mongodb-分片和非分片集合

Mongodb-分片和非分片集合,mongodb,sharding,Mongodb,Sharding,我有点搞不清楚这是怎么回事 在对MySQL进行分片时,我们有一些表,通常是带有参考数据的小表,在每个分片中都是完整的。这是为了启用连接 如果我们在MongoDB中有一些小集合,但我们没有在分片设置中进行分片,那么它们会发生什么?它们是被发送到每个碎片上,还是只停留在第一个碎片上 这可能是一个潜在的瓶颈,如果具有多个应用程序服务器的高度分片系统中的所有进程都在一台服务器上运行。在具有自动分片功能的MongoDB中,分片集合将以某种方式均匀分布在所有分片上 对于那些不可能进行切分(未切分)的集合,您

我有点搞不清楚这是怎么回事

在对MySQL进行分片时,我们有一些表,通常是带有参考数据的小表,在每个分片中都是完整的。这是为了启用连接

如果我们在MongoDB中有一些小集合,但我们没有在分片设置中进行分片,那么它们会发生什么?它们是被发送到每个碎片上,还是只停留在第一个碎片上


这可能是一个潜在的瓶颈,如果具有多个应用程序服务器的高度分片系统中的所有进程都在一台服务器上运行。

在具有自动分片功能的MongoDB中,分片集合将以某种方式均匀分布在所有分片上

对于那些不可能进行切分(未切分)的集合,您可以指定它们将驻留在哪个集合上。这个主分片是特定数据库的给定分片,因此它在每个数据库级别上。可以移动,并且对于不同的数据库可以不同


碎片标记的概念可以影响碎片集合的放置位置。基本上,您可以将集合或集合的一部分约束为存储在特定的碎片集上。()

您必须手动告诉(命令)哪些集合被切分。对于较小的集合,不要将其切分,因此它将只保留在1个切分中。(在该集合上)完成的任何查询将只发送到保存该集合的切分。请参阅:
http://docs.mongodb.org/manual/tutorial/deploy-shard-cluster/#sharding-设置碎片集合
您没有碎片的集合将驻留在第一个碎片上,是的,这可能是一个瓶颈,但也有关于分发这些集合的讨论,目前MongoDB没有。我不确定标记感知切分是否适用于非切分集合,从未对其进行过测试,但是,从非切分集合的块永远不会平衡这一事实判断,我不会说什么。这就是为什么我写下“你可以影响切分集合的放置位置”,但是,可以说您可能会将一个分片集合完全放在一个分片上,这几乎(可能完全)是非分片集合的行为。我很确定你不能标记未共享的集合。谢谢大家。这正是我所关心的。对我来说,这是一个潜在的威胁。当然,在Mongo中您不必担心连接,这是将较小的表复制到各种碎片的主要原因之一。处理这些问题的另一种方法是建立一个不同的复制环境。我猜,在Mongo环境中,您往往不会通过唯一键进行状态分析,例如,您使用的是希望显示在报告中的实际状态,等等。只有当您想要更改状态文本时,这才是一个问题。需要小心索引和分片。一旦一个集合被切分,唯一索引就不再像预期的那样工作,所以如果您只是自动切分任意集合,而不考虑唯一索引,某些内容可能会中断。