Es sieht so aus, als ob Datenbank-Sharding großartig ist, wenn ich riesige Sammlungen habe. Was ist, wenn ich viele ziemlich große Sammlungen habe? Nehmen wir an, dass für 1 Sammlung von 100 000 000 Dokumenten (nicht sehr große Kommentare) das Sharding effektiv ist. Ist es auch für 10 000 Sammlungen mit jeweils 10 000 Dokumenten wirksam?
(Ich denke, diese Frage gilt weiterhin für tabellenorientierte Datenbanken, wenn Sie Sammlungen durch Tabellen und Dokumente durch Zeilen ersetzen. Wenn möglich, möchte ich die theoretische Antwort sowie die Antwort im spezifischen MongoDB-Szenario kennen, sofern diese von der theoretischen abweicht Antworten.)
foo
undbar
mit der gleichen Datenstruktur, können Sie sie in die fusionierenbaz
Sammlung und die außer Kraft setzen_ids
(in Code):{ _id: "foo123" }, { _id: "bar123" }
. Sie haben einen größeren Index, aber nur einen Index, der den Typ enthält. Keine Voraussetzung, nur "Denkanstoß".MongoDB-Sharding funktioniert, indem eine Sammlung in kleinere "Blöcke" aufgeteilt und gleichmäßig auf mehrere Maschinen verteilt wird. Die Standardblockgröße, die im Allgemeinen am effizientesten ist, beträgt 200 MB. Wenn eine Sammlung also nicht viel größer als 200 MB wird, wird sie nicht in Blöcke aufgeteilt und kann daher nicht gesplittert werden. Daher gibt es keine Vorteile.
Im Allgemeinen ist das Sharding von Daten über mehrere Computer eine sehr effektive Methode zum Skalieren von Lese-, Schreib- und Abfragen. Sie profitieren von mehreren CPUs, Festplatten und Speicher, die parallel zum Lesen, Schreiben und Verarbeiten von Daten arbeiten. Das Skalieren des Speichers ist besonders wichtig für MongoDB, wo eine hohe Leistung sehr empfindlich auf Datenanpassungen im Speicher reagiert.
quelle