В наше время (2015) с mongodb v3.0.x есть блокировка на уровне коллекции с помощью mmap, которая немного увеличивает пропускную способность записи (при условии, что вы пишете в несколько коллекций), но если вы используетеВ wiredtiger есть блокировка на уровне документа, которая имеет гораздо более высокую пропускную способность записи.Это устраняет необходимость в разделении на одну машинуХотя технически вы все равно можете повысить производительность mapReduce путем разделения на одну машину, но в этом случае вам лучше использовать инфраструктуру агрегации, которая может использовать несколько ядер.Если вы в большой степени полагаетесь на алгоритмы сокращения карт, возможно, имеет смысл использовать что-то наподобие Hadoop.
Единственная причина для шардинга mongodb - это горизонтальное масштабирование.Таким образом, в случае, если на одной машине не может быть достаточно дискового пространства, памяти или мощности ЦП (редко), тогда разбиение становится выгодным.Я думаю, что действительно очень редко кто-то имеет достаточно данных, которые им нужно осквернить, даже крупному бизнесу, особенно с учетом того, что в wiredtiger добавлена поддержка сжатия, которая может снизить использование диска более чем на 80%.Также нечасто, когда кто-то использует mongodb для выполнения действительно больших нагрузок на процессор в больших масштабах, потому что для этого есть гораздо лучшие технологии.В большинстве случаев IO является наиболее важным фактором производительности, не так много запросов нагружают процессор, если вы не выполняете много сложных агрегаций, даже геопространственное индексируется при вставке.
Скорее всего, вы 'Если вам нужно много индексов, которые занимают большой объем ОЗУ, вам нужно использовать shard, wiredtiger уменьшает это, но это все еще самая распространенная причина для shard.В то время как разделение на одной машине, скорее всего, приведет к нежелательным накладным расходам, при этом очень мало или вообще не будет никаких преимуществ.