Es ist unklar, was Sie unter dem Vergleich von Kartenreduzierung und Sharding verstehen. Aber die kurze Antwort lautet: Scherben .
Wenn Sie kartenreduzierende Abfragen entwerfen, möchten Sie nicht, dass Hunderte von kartenreduzierten Abfragen gleichzeitig ausgeführt werden. Sie würden mongo nur überladen, da dies im Wesentlichen bedeutet, dass Hunderte von vollständigen Sammlungsscans alle gleichzeitig ausgeführt werden.
Wenn Sie ein Beispiel für eine Ihrer vorhandenen Abfragen zur Kartenreduzierung haben, fügen Sie es bitte Ihrer Frage hinzu.
In Bezug auf das Sharding kommt es darauf an, was Sie für den Sharding-Schlüssel verwenden.
Wenn Sie beispielsweise eine Benutzersammlung unter dem Benutzernamen speichern,
db.users.find()
wird Mongos veranlassen, die Abfrage an alle Shards zu senden und die Ergebnismengen (intelligent) zusammenzuführen. Hinzufügen des Sharding-Schlüssels zur Abfrage:
db.users.find().sort({username: 1}).limit(100);
würde Mongos die Möglichkeit geben, mit weniger Mongod gleichzeitig zu sprechen.
Ein besseres Beispiel, wenn Sie Folgendes abfragen:
db.users.find({username: /^bob/})
Mongos senden die Abfrage an die Shards, deren Shard-Schlüssel darauf hinweisen, dass sie Antworten enthalten könnten, höchstwahrscheinlich nur einen Server. Dies führt zu einer schnellen Abfrage und ohne zusätzliche Belastung seitens der Mongos.
Vielleicht sind die obigen Beispiele für Sie keine Neuigkeit.
Die Abfragen, die Sie jetzt an mongo senden, haben dieselbe Syntax, die Sie zum Senden an eine Sharded-Datenbank verwenden würden. Das einzige, was Sie anders machen würden, ist (zuvor) zu analysieren, welche Schlüssel zu sharden sind, damit Sie bei Bedarf Ihre Abfragen so ändern können, dass sie den Sharding-Schlüssel enthalten, und damit Mongos wie ein Proxy anstelle eines Agregators agieren können.
Ein schlechter Sharding-Schlüssel oder das Ausnutzen des Shardings in den von Ihnen generierten Abfragen würde dazu führen, dass Mongos alle Mongod-Server nach allen Abfragen abfragen müssen, was zu einer hohen Auslastung und einer schlechten Leistung führt.