{"id":64708,"date":"2023-08-08T10:54:05","date_gmt":"2023-08-08T09:54:05","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=64708&#038;preview=true&#038;preview_id=64708"},"modified":"2023-08-25T16:20:23","modified_gmt":"2023-08-25T15:20:23","slug":"mongodb-sharding","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/","title":{"rendered":"Ein umfassender Leitfaden zum Verst\u00e4ndnis von MongoDB Sharding"},"content":{"rendered":"<p>In der heutigen datengesteuerten Welt, in der das Volumen und die Komplexit\u00e4t der Daten in einem noch nie dagewesenen Tempo wachsen, ist der Bedarf an robusten und skalierbaren Datenbankl\u00f6sungen von gr\u00f6\u00dfter Bedeutung. Sch\u00e4tzungen zufolge werden bis 2025 <a href=\"https:\/\/www.statista.com\/statistics\/871513\/worldwide-data-created\/\" target=\"_blank\" rel=\"noopener noreferrer\">180 Zettabyte an Daten<\/a> erzeugt. Das sind gro\u00dfe Zahlen, die du dir vorstellen sollst.<\/p>\n<p>Wenn die Datenmenge und die Nachfrage der Nutzer\/innen in die H\u00f6he schie\u00dfen, ist es unpraktisch, sich auf eine einzige Datenbank zu verlassen. Es verlangsamt dein System und \u00fcberfordert die <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-ein-full-stack-entwickler\/\">Entwickler<\/a>. Es gibt verschiedene L\u00f6sungen, um <a href=\"https:\/\/kinsta.com\/de\/mykinsta\/\">deine Datenbank zu optimieren<\/a>, wie z.B. das <a href=\"https:\/\/kinsta.com\/de\/blog\/datenbank-sharding\/\">Sharding von Datenbanken<\/a>.<\/p>\n<p>In diesem umfassenden Leitfaden tauchen wir in die Tiefen des MongoDB-Shardings ein und erl\u00e4utern seine Vorteile, Komponenten, Best Practices, h\u00e4ufige Fehler und wie du loslegen kannst.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Was ist Datenbank-Sharding?<\/h2>\n<p>Datenbank-Sharding ist eine Datenbankverwaltungstechnik, bei der eine wachsende Datenbank horizontal in kleinere, besser zu verwaltende Einheiten, sogenannte <b>Shards<\/b>, aufgeteilt wird.<\/p>\n<p>Wenn deine Datenbank gr\u00f6\u00dfer wird, ist es sinnvoll, sie in mehrere kleinere Teile aufzuteilen und jeden Teil separat auf verschiedenen Rechnern zu speichern. Diese kleineren Teile, auch Shards genannt, sind unabh\u00e4ngige Teilmengen der Gesamtdatenbank. Dieser Prozess des Aufteilens und Verteilens von Daten ist das Sharding der Datenbank.<\/p>\n<figure id=\"attachment_157232\" aria-describedby=\"caption-attachment-157232\" style=\"width: 512px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/06\/Database-Sharding-Illustration.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-157232 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/06\/Database-Sharding-Illustration.png\" alt=\"Dieses Bild zeigt den Prozess des Datenbank-Sharings, bei dem eine bestimmte Datenbank in drei Shards aufgeteilt wird.\" width=\"512\" height=\"185\"><\/a><figcaption id=\"caption-attachment-157232\" class=\"wp-caption-text\">Illustration des Datenbank-Shardings (Bildquelle: <a href=\"https:\/\/www.linkedin.com\/pulse\/intro-database-sharding-can-bad-idea-saurav-prateek\/\" target=\"_blank\" rel=\"noopener noreferrer\">LinkedIn<\/a>)<\/figcaption><\/figure>\n<p>Bei der Implementierung einer Sharded-Datenbank gibt es zwei Hauptans\u00e4tze: die Entwicklung einer eigenen Sharding-L\u00f6sung oder die Bezahlung f\u00fcr eine bestehende L\u00f6sung. Dabei stellt sich die Frage, ob es sinnvoller ist, eine Sharding-L\u00f6sung zu entwickeln oder zu bezahlen.<\/p>\n<figure id=\"attachment_157234\" aria-describedby=\"caption-attachment-157234\" style=\"width: 512px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/06\/Build-vs-Buy-for-a-Sharding-Solution.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-157234 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/06\/Build-vs-Buy-for-a-Sharding-Solution.jpg\" alt=\"Das ist ein Meme-Bild - der t\u00e4gliche Kampf, das einen Mann zeigt, der darum ringt, welchen der beiden Kn\u00f6pfe er dr\u00fccken soll.\" width=\"512\" height=\"205\"><\/a><figcaption id=\"caption-attachment-157234\" class=\"wp-caption-text\">Build vs. Buy f\u00fcr eine Sharding-L\u00f6sung Meme-Grafik (Bildquelle: <a href=\"https:\/\/www.linkedin.com\/pulse\/build-vs-buy-what-do-you-expect-see-new-normal-naidu\/\" target=\"_blank\" rel=\"noopener noreferrer\">LinkedIn<\/a>)<\/figcaption><\/figure>\n<p>Um diese Entscheidung zu treffen, musst du die Kosten f\u00fcr die Integration von Drittanbietern abw\u00e4gen und dabei die folgenden Faktoren ber\u00fccksichtigen:<\/p>\n<ul>\n<li><b>Entwicklerf\u00e4higkeiten und Lernf\u00e4higkeit<\/b>: Die Lernkurve, die mit dem Produkt verbunden ist, und wie gut es mit den F\u00e4higkeiten deiner Entwickler \u00fcbereinstimmt.<\/li>\n<li><b>Das Datenmodell und die API, die das System anbietet<\/b>: Jedes Datensystem hat seine eigene Art, seine Daten darzustellen. Die Bequemlichkeit und Leichtigkeit, mit der du deine Anwendungen in das Produkt integrieren kannst, ist ein wichtiger Faktor, den du ber\u00fccksichtigen solltest.<\/li>\n<li><b>Kundensupport und Online-Dokumentation<\/b>: Wenn du bei der Integration auf Herausforderungen st\u00f6\u00dft oder Hilfe ben\u00f6tigst, sind die Qualit\u00e4t und Verf\u00fcgbarkeit des Kundensupports und der umfassenden Online-Dokumentation entscheidend.<\/li>\n<li><b>Verf\u00fcgbarkeit der Cloud-Bereitstellung<\/b>: Da immer mehr Unternehmen auf die Cloud umsteigen, ist es wichtig festzustellen, ob das Drittanbieterprodukt in einer Cloud-Umgebung eingesetzt werden kann.<\/li>\n<\/ul>\n<p>Auf der Grundlage dieser Faktoren kannst du nun entscheiden, ob du eine Sharding-L\u00f6sung bauen oder f\u00fcr eine L\u00f6sung bezahlen willst, die dir die Arbeit abnimmt.<\/p>\n<p>Heute unterst\u00fctzen die meisten Datenbanken auf dem Markt Datenbank-Sharding. Zum Beispiel relationale Datenbanken wie MariaDB (ein Teil des High-Performance Server Stacks bei <a href=\"https:\/\/kinsta.com\/de\/blog\/datenbank-sharding\/\">Kinsta<\/a>) und <a href=\"https:\/\/kinsta.com\/de\/blog\/mongodb-vs-mysql\/\">NoSQL-Datenbanken<\/a> wie MongoDB.<\/p>\n<h2>Was ist Sharding in MongoDB?<\/h2>\n<p>Der Hauptzweck des Einsatzes einer NoSQL-Datenbank ist ihre F\u00e4higkeit, die Rechen- und Speicheranforderungen bei der Abfrage und Speicherung riesiger Datenmengen zu bew\u00e4ltigen.<\/p>\n<p>In der Regel enth\u00e4lt eine MongoDB-Datenbank eine gro\u00dfe Anzahl von Sammlungen. Jede Sammlung besteht aus verschiedenen Dokumenten, die Daten in Form von Schl\u00fcssel-Werte-Paaren enthalten. Mit MongoDB Sharding kannst du diese gro\u00dfe Sammlung in mehrere kleinere Sammlungen aufteilen. Dadurch kann MongoDB Abfragen durchf\u00fchren, ohne den Server stark zu belasten.<\/p>\n<p>Telef\u00f3nica Tech zum Beispiel verwaltet weltweit \u00fcber <a href=\"https:\/\/www.mongodb.com\/customers\/telefonica\" target=\"_blank\" rel=\"noopener noreferrer\">30 Millionen IoT-Ger\u00e4te<\/a>. Um mit der st\u00e4ndig steigenden Ger\u00e4tenutzung Schritt zu halten, brauchte das Unternehmen eine Plattform, die elastisch skaliert und eine schnell wachsende Datenumgebung verwalten kann. Die Sharding-Technologie von MongoDB war f\u00fcr sie die richtige Wahl, da sie am besten zu ihren Kosten- und Kapazit\u00e4tsanforderungen passte.<\/p>\n<p>Mit MongoDB-Sharding f\u00fchrt Telef\u00f3nica Tech weit \u00fcber 115.000 Abfragen pro Sekunde durch. Das sind 30.000 Datenbankeinf\u00fcgungen pro Sekunde bei einer Latenz von weniger als einer Millisekunde!<\/p>\n<h2>Vorteile von MongoDB Sharding<\/h2>\n<p>Hier sind einige Vorteile von MongoDB Sharding f\u00fcr gro\u00dfe Datenmengen, die du nutzen kannst:<\/p>\n<h3>Speicherkapazit\u00e4t<\/h3>\n<p>Wir haben bereits gesehen, dass beim Sharding die Daten auf die Shards des Clusters verteilt werden. Durch diese Verteilung enth\u00e4lt jeder Shard ein Fragment der gesamten Clusterdaten. Zus\u00e4tzliche Shards erh\u00f6hen die Speicherkapazit\u00e4t des Clusters, wenn dein Datensatz gr\u00f6\u00dfer wird.<\/p>\n<h3>Lesen\/Schreiben<\/h3>\n<p>MongoDB verteilt die Lese- und Schreiblast auf die Shards in einem Sharded-Cluster, so dass jeder Shard eine Teilmenge der Clusteroperationen verarbeiten kann. Beide Arbeitslasten k\u00f6nnen horizontal \u00fcber den Cluster skaliert werden, indem weitere Shards hinzugef\u00fcgt werden.<\/p>\n<h3>Hohe Verf\u00fcgbarkeit<\/h3>\n<p>Der Einsatz von Shards und Config-Servern als Replika-Sets bietet eine h\u00f6here Verf\u00fcgbarkeit. Selbst wenn ein oder mehrere Shard-Replikat-Sets komplett ausfallen, kann der Sharded-Cluster teilweise Lese- und Schreibvorg\u00e4nge durchf\u00fchren.<\/p>\n<h3>Schutz vor einem Ausfall<\/h3>\n<p>Viele Nutzer\/innen sind betroffen, wenn ein Rechner aufgrund eines ungeplanten Ausfalls ins Gras bei\u00dft. Da in einem nicht gesharten System die gesamte Datenbank ausgefallen w\u00e4re, sind die Auswirkungen massiv. Mit MongoDB Sharding kann der Radius der Auswirkungen auf die Nutzer\/innen einged\u00e4mmt werden.<\/p>\n<h3>Geo-Verteilung und Leistung<\/h3>\n<p>Replizierte Shards k\u00f6nnen in verschiedenen Regionen platziert werden. Das bedeutet, dass Kunden mit geringer Latenz auf ihre Daten zugreifen k\u00f6nnen, d.h. sie k\u00f6nnen ihre Anfragen an den Shard weiterleiten, der ihnen am n\u00e4chsten ist. Auf der Grundlage der Data Governance Policy einer Region k\u00f6nnen bestimmte Shards so konfiguriert werden, dass sie in einer bestimmten Region platziert werden.<\/p>\n<h2>Komponenten von MongoDB Sharded Clustern<\/h2>\n<p>Nachdem wir das Konzept eines MongoDB Sharded Clusters erkl\u00e4rt haben, wollen wir uns nun mit den Komponenten besch\u00e4ftigen, aus denen solche Cluster bestehen.<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"3\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>1. Shard<\/h3>\n<p>Jeder Shard enth\u00e4lt eine Teilmenge der geshardeten Daten. Ab MongoDB 3.6 m\u00fcssen Shards als Replikatset bereitgestellt werden, um Hochverf\u00fcgbarkeit und Redundanz zu gew\u00e4hrleisten.<\/p>\n<p>Jede Datenbank im Sharded-Cluster hat einen prim\u00e4ren Shard, der alle nicht geshardeten Sammlungen f\u00fcr diese Datenbank enth\u00e4lt. Der prim\u00e4re Shard ist nicht mit dem prim\u00e4ren Shard in einem Replikatset verbunden.<\/p>\n<p>Um den prim\u00e4ren Shard f\u00fcr eine Datenbank zu \u00e4ndern, kannst du den Befehl <code>movePrimary<\/code> verwenden. Der Prozess der Migration des Primary Shards kann einige Zeit in Anspruch nehmen.<\/p>\n<p>W\u00e4hrend dieser Zeit solltest du nicht versuchen, auf die mit der Datenbank verbundenen Collections zuzugreifen, bis der Migrationsprozess abgeschlossen ist. Je nach der Menge der zu migrierenden Daten kann dieser Prozess den gesamten Clusterbetrieb beeintr\u00e4chtigen.<\/p>\n<p>Du kannst die Methode <code>sh.status()<\/code> in <strong>mongosh<\/strong> verwenden, um dir einen \u00dcberblick \u00fcber den Cluster zu verschaffen. Diese Methode gibt den prim\u00e4ren Shard f\u00fcr die Datenbank sowie die Verteilung der Chunks auf die Shards zur\u00fcck.<\/p>\n<h3>2. Config-Server<\/h3>\n<p>Die Bereitstellung von Config-Servern f\u00fcr Sharded-Cluster als Replika-Sets w\u00fcrde die Konsistenz der Config-Server verbessern. Das liegt daran, dass MongoDB die standardm\u00e4\u00dfigen Lese- und Schreibprotokolle f\u00fcr Replikats\u00e4tze f\u00fcr die Konfigurationsdaten nutzen kann. Um Konfigurationsserver als Replikat-Sets einzusetzen, musst du die WiredTiger Storage Engine verwenden.<\/p>\n<p>WiredTiger verwendet die Gleichzeitigkeitskontrolle auf Dokumentenebene f\u00fcr seine Schreiboperationen. Daher k\u00f6nnen mehrere Clients verschiedene Dokumente einer Sammlung gleichzeitig \u00e4ndern. Config-Server speichern die Metadaten f\u00fcr einen Sharded Cluster in der Config-Datenbank.<\/p>\n<p>Um auf die Konfigurationsdatenbank zuzugreifen, kannst du den folgenden Befehl in der Mongo-Shell verwenden:<\/p>\n<pre><code class=\"language-bash\"><code>use config<\/code><\/code><\/pre>\n<p>Hier gibt es einige Einschr\u00e4nkungen, die du beachten musst:<\/p>\n<ul>\n<li>Eine Replikatset-Konfiguration, die f\u00fcr Config-Server verwendet wird, sollte keine Arbiter haben. Ein Arbiter nimmt zwar an der Wahl zum Primary teil, hat aber keine Kopie des Datensatzes und kann nicht zum Primary werden.<\/li>\n<li>Dieses Replikatset darf keine verz\u00f6gerten Mitglieder haben. Versp\u00e4tete Mitglieder haben Kopien des Datensatzes des Replikatsets. Aber der Datensatz eines verz\u00f6gerten Mitglieds enth\u00e4lt einen fr\u00fcheren oder verz\u00f6gerten Zustand des Datensatzes.<\/li>\n<li>Du musst Indizes f\u00fcr die Config-Server erstellen. Einfach ausgedr\u00fcckt: Kein Mitglied sollte die Einstellung <code>members[n].buildIndexes<\/code> auf <code>false<\/code> haben.<\/li>\n<\/ul>\n<p>Wenn die Konfigurations-Server-Replikatgruppe ihr prim\u00e4res Mitglied verliert und kein neues w\u00e4hlen kann, werden die Metadaten des Clusters schreibgesch\u00fctzt. Du kannst zwar immer noch von den Shards lesen und schreiben, aber es werden keine Chunk-Splits oder Migrationen durchgef\u00fchrt, bis das Replikat-Set ein prim\u00e4res Mitglied w\u00e4hlen kann.<\/p>\n<h3>3. Abfrage-Router<\/h3>\n<p>MongoDB Mongos-Instanzen k\u00f6nnen als Query Router dienen, damit Client-Anwendungen und die Sharded-Cluster problemlos miteinander verbunden werden k\u00f6nnen.<\/p>\n<p>Ab MongoDB 4.4 kann mongos hedged reads unterst\u00fctzen, um die Latenzzeiten zu verringern. Bei Hedged Reads senden die Mongos-Instanzen Lesevorg\u00e4nge an zwei Replikatgruppenmitglieder f\u00fcr jeden abgefragten Shard. Die Ergebnisse werden dann von dem ersten Befragten pro Shard zur\u00fcckgegeben.<\/p>\n<p>Hier siehst du, wie die drei Komponenten in einem Sharded-Cluster zusammenspielen:<\/p>\n<figure id=\"attachment_157236\" aria-describedby=\"caption-attachment-157236\" style=\"width: 1132px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/06\/Interaction-of-Sharded-Cluster-Components.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-157236 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/06\/Interaction-of-Sharded-Cluster-Components.png\" alt=\"Dieses Bild beschreibt, wie die verschiedenen Komponenten eines Sharded Clusters - Shards, Config Server und Query Router - miteinander interagieren.\" width=\"1132\" height=\"655\"><\/a><figcaption id=\"caption-attachment-157236\" class=\"wp-caption-text\">Zusammenspiel der Komponenten eines Sharded Clusters (Bildquelle: <a href=\"https:\/\/www.mongodb.com\/docs\/manual\/sharding\/\" target=\"_blank\" rel=\"noopener noreferrer\">MongoDB Sharding<\/a>)<\/figcaption><\/figure>\n<p>Eine MongoDB-Instanz richtet eine Anfrage an einen Cluster, indem:<\/p>\n<ol>\n<li>Die Liste der Shards, die die Abfrage erhalten sollen, \u00fcberpr\u00fcft wird.<\/li>\n<li>Ein Cursor auf allen Ziel-Shards eingerichtet wird.<\/li>\n<\/ol>\n<p>Mongos f\u00fchrt dann die Daten der einzelnen Shards zusammen und gibt das Ergebnisdokument zur\u00fcck. Einige Abfragemodifikatoren, wie z.B. das Sortieren, werden auf jedem Shard ausgef\u00fchrt, bevor die Mongos die Ergebnisse abrufen.<\/p>\n<p>In einigen F\u00e4llen, in denen der Shard-Schl\u00fcssel oder ein Shard-Schl\u00fcssel-Pr\u00e4fix Teil der Abfrage ist, f\u00fchrt mongos eine vorgeplante Operation aus, die Abfragen auf eine Unterklasse von Shards im Cluster verweist.<\/p>\n<p>F\u00fcr einen <b>Produktionscluster<\/b> musst du sicherstellen, dass die Daten redundant sind und deine Systeme hochverf\u00fcgbar sind. Du kannst die folgende Konfiguration f\u00fcr einen produktiven Sharded-Cluster-Einsatz w\u00e4hlen:<\/p>\n<ul>\n<li>Einsatz jedes Shards als 3er-Replikat-Set<\/li>\n<li>Einsatz der Konfigurationsserver als 3er-Replikatset<\/li>\n<li>Einsatz von einem oder mehreren Mongos-Routern<\/li>\n<\/ul>\n<p>F\u00fcr einen <b>nicht-produktiven Cluster<\/b> kannst du einen Sharded Cluster mit den folgenden Komponenten einrichten:<\/p>\n<ul>\n<li>Einem einzelnen Shard-Replikatsatz<\/li>\n<li>Einem Replikatsatz-Konfigurations-Server<\/li>\n<li>Eine Mongos-Instanz<\/li>\n<\/ul>\n<h2>Wie funktioniert MongoDB Sharding?<\/h2>\n<p>Nachdem wir nun die verschiedenen Komponenten eines Sharding-Clusters besprochen haben, ist es an der Zeit, dass wir uns mit dem Prozess besch\u00e4ftigen.<\/p>\n<p>Um die Daten auf mehrere Server zu verteilen, verwendest du Mongos. Wenn du eine Verbindung herstellst, um die Abfragen an MongoDB zu senden, sucht mongos nach, wo sich die Daten befinden. Er holt sie dann vom richtigen Server und f\u00fchrt alles zusammen, wenn es auf mehrere Server aufgeteilt wurde.<\/p>\n<p>Da das im <a href=\"https:\/\/kinsta.com\/de\/blog\/backend-entwickler\/\">Backend<\/a> erledigt wird, musst du auf der Anwendungsseite nichts mehr tun. MongoDB wird sich wie eine normale Abfrageverbindung verhalten. Dein Client stellt eine Verbindung zu MongoDB her, und der Config-Server k\u00fcmmert sich um den Rest.<\/p>\n<h2>Wie richte ich MongoDB Sharding Schritt f\u00fcr Schritt ein?<\/h2>\n<p>Die Einrichtung von MongoDB Sharding ist ein Prozess, der mehrere Schritte umfasst, um einen stabilen und effizienten Datenbank-Cluster zu gew\u00e4hrleisten. Hier findest du eine detaillierte Schritt-f\u00fcr-Schritt-Anleitung, wie du MongoDB-Sharding einrichtest.<\/p>\n<p>Bevor wir beginnen, ist es wichtig zu wissen, dass du mindestens drei Server brauchst, um Sharding in MongoDB einzurichten: einen f\u00fcr den Konfigurationsserver, einen f\u00fcr die Mongos-Instanz und einen oder mehrere f\u00fcr die Shards.<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"6\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>1. Ein Verzeichnis vom Config Server erstellen<\/h3>\n<p>Zu Beginn erstellen wir ein Verzeichnis f\u00fcr die Daten des Config-Servers. Dazu f\u00fchren wir auf dem ersten Server den folgenden Befehl aus:<\/p>\n<pre><code class=\"language-bash\">mkdir \/data\/configdb<\/code><\/pre>\n<h3>2. MongoDB im Konfig-Modus starten<\/h3>\n<p>Als N\u00e4chstes starten wir MongoDB im Konfigurationsmodus auf dem ersten Server mit folgendem Befehl:<\/p>\n<pre><code class=\"language-bash\">mongod --configsvr --dbpath \/data\/configdb --port 27019<\/code><\/pre>\n<p>Damit wird der Config-Server auf <code>port 27019 <\/code> gestartet und seine Daten werden im Verzeichnis <strong>\/data\/configdb<\/strong> gespeichert. Beachte, dass wir das Flag <code>--configsvr<\/code> verwenden, um anzugeben, dass dieser Server als Konfigurationsserver verwendet wird.<\/p>\n<h3>3. Mongos-Instanz starten<\/h3>\n<p>Der n\u00e4chste Schritt besteht darin, die Mongos-Instanz zu starten. Bei diesem Vorgang werden die Abfragen anhand des Sharding-Schl\u00fcssels an die richtigen Shards weitergeleitet. Um die Mongos-Instanz zu starten, verwendest du den folgenden Befehl:<\/p>\n<pre><code class=\"language-bash\">mongos --configdb &lt;config server&gt;:27019<\/code><\/pre>\n<p>Ersetze <code>&lt;config server&gt;<\/code> durch die IP-Adresse oder den Hostnamen des Rechners, auf dem der Config-Server l\u00e4uft.<\/p>\n<h3>4. Mit der Mongos-Instanz verbinden<\/h3>\n<p>Sobald die Mongos-Instanz l\u00e4uft, k\u00f6nnen wir uns \u00fcber die MongoDB-Shell mit ihr verbinden. Dazu f\u00fchrst du den folgenden Befehl aus:<\/p>\n<pre><code class=\"language-markdown\">mongo --host &lt;mongos-server&gt; --port 27017<\/code><\/pre>\n<p>In diesem Befehl sollte <code>&lt;mongos-server&gt;<\/code> durch den Hostnamen oder die IP-Adresse des Servers ersetzt werden, auf dem die Mongos-Instanz l\u00e4uft. Dadurch wird die MongoDB-Shell ge\u00f6ffnet, so dass wir mit der Mongos-Instanz interagieren und dem Cluster Server hinzuf\u00fcgen k\u00f6nnen.<\/p>\n<p>Ersetze <code>&lt;mongos-server&gt;<\/code> durch die IP-Adresse oder den Hostnamen des Rechners, auf dem die Mongos-Instanz l\u00e4uft.<\/p>\n<h3>5. Server zu Clustern hinzuf\u00fcgen<\/h3>\n<p>Jetzt, da wir mit der Mongos-Instanz verbunden sind, k\u00f6nnen wir mit folgendem Befehl Server zum Cluster hinzuf\u00fcgen:<\/p>\n<pre><code class=\"language-markdown\">sh.addShard(\"&lt;shard-server&gt;:27017\")<\/code><\/pre>\n<p>In diesem Befehl sollte <code>&lt;shard-server&gt;<\/code> durch den Hostnamen oder die IP-Adresse des Servers ersetzt werden, auf dem der Shard l\u00e4uft. Dieser Befehl f\u00fcgt den Shard dem Cluster hinzu und macht ihn f\u00fcr die Nutzung verf\u00fcgbar.<\/p>\n<p>Wiederhole diesen Schritt f\u00fcr jeden Shard, den du dem Cluster hinzuf\u00fcgen m\u00f6chtest.<\/p>\n<h3>6. Sharding f\u00fcr die Datenbank aktivieren<\/h3>\n<p>Schlie\u00dflich aktivieren wir das Sharding f\u00fcr eine Datenbank, indem wir den folgenden Befehl ausf\u00fchren:<\/p>\n<pre><code class=\"language-markdown\">sh.enableSharding(\"&lt;database&gt;\")<\/code><\/pre>\n<p>In diesem Befehl sollte <code>&lt;database&gt;<\/code> durch den Namen der Datenbank ersetzt werden, die du sharden m\u00f6chtest. Dadurch wird das Sharding f\u00fcr die angegebene Datenbank aktiviert, so dass du ihre Daten auf mehrere Shards verteilen kannst.<\/p>\n<p>Und das war&#8217;s! Wenn du diese Schritte befolgst, solltest du jetzt einen voll funktionsf\u00e4higen MongoDB-Sharding-Cluster haben, der horizontal skaliert und mit hohem Datenverkehr umgehen kann.<\/p>\n<h2>Best Practices f\u00fcr MongoDB Sharding<\/h2>\n<p>Nachdem wir unseren Sharded-Cluster eingerichtet haben, ist eine regelm\u00e4\u00dfige \u00dcberwachung und Wartung des Clusters unerl\u00e4sslich, um eine optimale <a href=\"https:\/\/kinsta.com\/de\/blog\/apm-tools\/\">Leistung<\/a> zu gew\u00e4hrleisten. Einige Best Practices f\u00fcr MongoDB Sharding sind:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"7\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>1. Bestimme den richtigen Shard-Schl\u00fcssel<\/h3>\n<p>Der Shard-Schl\u00fcssel ist ein wichtiger Faktor beim MongoDB-Sharding, der bestimmt, wie die Daten auf die Shards verteilt werden. Es ist wichtig, einen Shard-Schl\u00fcssel zu w\u00e4hlen, der die Daten gleichm\u00e4\u00dfig \u00fcber die Shards verteilt und die g\u00e4ngigsten Abfragen unterst\u00fctzt. Du solltest vermeiden, einen Shard-Schl\u00fcssel zu w\u00e4hlen, der Hotspots oder eine ungleichm\u00e4\u00dfige Datenverteilung verursacht, da dies zu Leistungsproblemen f\u00fchren kann.<\/p>\n<p>Um den richtigen Shard-Schl\u00fcssel zu w\u00e4hlen, solltest du deine Daten und die Arten von Abfragen, die du durchf\u00fchren wirst, analysieren und einen Schl\u00fcssel w\u00e4hlen, der diese Anforderungen erf\u00fcllt.<\/p>\n<h3>2. Plane f\u00fcr das Datenwachstum<\/h3>\n<p>Wenn du deinen Sharded-Cluster einrichtest, solltest du f\u00fcr zuk\u00fcnftiges Wachstum planen, indem du mit gen\u00fcgend Shards beginnst, um deine aktuelle Arbeitslast zu bew\u00e4ltigen, und bei Bedarf weitere hinzuf\u00fcgst. Vergewissere dich, dass deine Hardware- und Netzwerkinfrastruktur die Anzahl der Shards und die Datenmenge, die du in Zukunft erwartest, unterst\u00fctzen kann.<\/p>\n<h3>3. Dedizierte Hardware f\u00fcr Shards verwenden<\/h3>\n<p>Verwende f\u00fcr jeden Shard eine eigene Hardware, um optimale Leistung und Zuverl\u00e4ssigkeit zu gew\u00e4hrleisten. Jeder Shard sollte \u00fcber einen eigenen Server oder eine eigene virtuelle Maschine verf\u00fcgen, damit er alle Ressourcen ohne St\u00f6rungen nutzen kann.<\/p>\n<p>Die Verwendung gemeinsamer Hardware kann zu Ressourcenkonflikten und Leistungseinbu\u00dfen f\u00fchren, was die Zuverl\u00e4ssigkeit des gesamten Systems beeintr\u00e4chtigt.<\/p>\n<h3>4. Replikats\u00e4tze f\u00fcr Shard-Server verwenden<\/h3>\n<p>Die Verwendung von Replikats\u00e4tzen f\u00fcr Shard-Server bietet hohe Verf\u00fcgbarkeit und Fehlertoleranz f\u00fcr deinen MongoDB-Sharded-Cluster. Jedes Replikatset sollte aus mindestens drei Mitgliedern bestehen, und jedes Mitglied sollte sich auf einem separaten physischen Rechner befinden. Auf diese Weise wird sichergestellt, dass dein Sharded-Cluster den Ausfall eines einzelnen Servers oder Replikats \u00fcberstehen kann.<\/p>\n<h3>5. Shard-Leistung \u00fcberwachen<\/h3>\n<p>Die \u00dcberwachung der Leistung deiner Shards ist wichtig, um Probleme zu erkennen, bevor sie zu gro\u00dfen Problemen werden. Du solltest die CPU, den Arbeitsspeicher, die Festplatten-E\/A und die Netzwerk-E\/A f\u00fcr jeden Shard-Server \u00fcberwachen, um sicherzustellen, dass der Shard die Arbeitslast bew\u00e4ltigen kann.<\/p>\n<p>Du kannst die in MongoDB integrierten \u00dcberwachungstools wie <a href=\"https:\/\/www.mongodb.com\/docs\/database-tools\/mongostat\/\" target=\"_blank\" rel=\"noopener noreferrer\">mongostat<\/a> und <a href=\"https:\/\/www.mongodb.com\/docs\/database-tools\/mongotop\/\" target=\"_blank\" rel=\"noopener noreferrer\">mongotop<\/a> oder \u00dcberwachungstools von Drittanbietern wie Datadog, Dynatrace und Zabbix verwenden, um die Leistung der Shards zu \u00fcberwachen.<\/p>\n<h3>6. Plan f\u00fcr Disaster Recovery<\/h3>\n<p>Um die Zuverl\u00e4ssigkeit deines MongoDB-Sharded-Clusters aufrechtzuerhalten, ist es wichtig, die Disaster Recovery zu planen. Du solltest einen Disaster-Recovery-Plan haben, der regelm\u00e4\u00dfige Backups, das Testen von Backups, um sicherzustellen, dass sie g\u00fcltig sind, und einen Plan f\u00fcr die Wiederherstellung von Backups im Falle eines Ausfalls umfasst.<\/p>\n<h3>7. Verwende Hashed-basiertes Sharding, wenn es angebracht ist<\/h3>\n<p>Bei Anwendungen, die bereichsbasierte Abfragen durchf\u00fchren, ist das Hashed-Sharding von Vorteil, da die Operationen auf weniger Shards, meist auf einen einzigen Shard, beschr\u00e4nkt werden k\u00f6nnen. Um dies zu implementieren, musst du deine Daten und die Abfragemuster verstehen.<\/p>\n<p>Hashed Sharding sorgt f\u00fcr eine gleichm\u00e4\u00dfige Verteilung von Lese- und Schreibvorg\u00e4ngen. Allerdings bietet es keine effizienten bereichsbasierten Operationen.<\/p>\n<h2>Was sind die h\u00e4ufigsten Fehler, die du beim Sharding deiner MongoDB-Datenbank vermeiden solltest?<\/h2>\n<p>MongoDB-Sharding ist eine leistungsstarke Technik, mit der du deine Datenbank horizontal skalieren und die Daten auf mehrere Server verteilen kannst. Es gibt jedoch einige h\u00e4ufige Fehler, die du beim Sharding deiner MongoDB-Datenbank vermeiden solltest. Nachfolgend findest du einige der h\u00e4ufigsten Fehler und wie du sie vermeiden kannst.<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"7\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>1. Den falschen Sharding-Schl\u00fcssel w\u00e4hlen<\/h3>\n<p>Eine der wichtigsten Entscheidungen, die du beim Sharding deiner MongoDB-Datenbank treffen wirst, ist die Wahl des Sharding-Schl\u00fcssels. Der Sharding-Schl\u00fcssel bestimmt, wie die Daten auf die Shards verteilt werden, und die Wahl des falschen Schl\u00fcssels kann zu einer ungleichm\u00e4\u00dfigen Datenverteilung, Hotspots und schlechter Leistung f\u00fchren.<\/p>\n<p>Ein h\u00e4ufiger Fehler ist es, einen Shard-Schl\u00fcsselwert zu w\u00e4hlen, der sich nur f\u00fcr neue Dokumente erh\u00f6ht, wenn ein bereichsbasiertes Sharding im Gegensatz zum Hash-Sharding verwendet wird. Zum Beispiel ein Zeitstempel (nat\u00fcrlich) oder irgendetwas mit einer Zeitkomponente als wichtigstem Bestandteil, wie ObjectID (die ersten vier Bytes sind ein Zeitstempel).<\/p>\n<p>Wenn du einen Shard-Schl\u00fcssel ausw\u00e4hlst, gehen alle Einf\u00fcgungen in den Chunk mit dem gr\u00f6\u00dften Bereich. Auch wenn du immer wieder neue Shards hinzuf\u00fcgst, wird sich deine maximale Schreibkapazit\u00e4t nicht erh\u00f6hen.<\/p>\n<p>Wenn du vorhast, die Schreibkapazit\u00e4t zu skalieren, solltest du einen Hash-basierten Shard-Schl\u00fcssel verwenden, der die Verwendung desselben Feldes erm\u00f6glicht und gleichzeitig eine gute Skalierbarkeit beim Schreiben bietet.<\/p>\n<h3>2. Der Versuch, den Wert des Shard-Schl\u00fcssels zu \u00e4ndern<\/h3>\n<p>Shard-Schl\u00fcssel sind f\u00fcr ein bestehendes Dokument unver\u00e4nderlich, das hei\u00dft, du kannst den Schl\u00fcssel nicht \u00e4ndern. Du kannst bestimmte Aktualisierungen vor dem Sharding vornehmen, aber nicht danach. Der Versuch, den Shard-Schl\u00fcssel f\u00fcr ein bestehendes Dokument zu \u00e4ndern, schl\u00e4gt mit der folgenden Fehlermeldung fehl:<\/p>\n<pre><code class=\"language-markdown\">cannot modify shard key's value fieldid for collection: collectionname<\/code><\/pre>\n<p>Du kannst das Dokument entfernen und wieder einf\u00fcgen, um den Shard-Schl\u00fcssel neu zu gestalten, anstatt zu versuchen, ihn zu \u00e4ndern.<\/p>\n<h3>3. Fehler bei der \u00dcberwachung des Clusters<\/h3>\n<p>Sharding f\u00fchrt zu einer zus\u00e4tzlichen Komplexit\u00e4t in der Datenbankumgebung, so dass es wichtig ist, den Cluster genau zu \u00fcberwachen. Wird der Cluster nicht \u00fcberwacht, kann dies zu Leistungsproblemen, Datenverlusten und anderen Problemen f\u00fchren.<\/p>\n<p>Um diesen Fehler zu vermeiden, solltest du \u00dcberwachungstools einrichten, die wichtige Kennzahlen wie CPU-Auslastung, Speicherplatz, Festplattenplatz und Netzwerkverkehr \u00fcberwachen. Au\u00dferdem solltest du Warnmeldungen einrichten, wenn bestimmte Schwellenwerte \u00fcberschritten werden.<\/p>\n<h3>4. Zu lange mit dem Hinzuf\u00fcgen eines neuen Shards warten (\u00fcberlastet)<\/h3>\n<p>Ein h\u00e4ufiger Fehler, den du beim Sharding deiner MongoDB-Datenbank vermeiden solltest, ist, zu lange mit dem Hinzuf\u00fcgen eines neuen Shards zu warten. Wenn ein Shard mit Daten oder Abfragen \u00fcberlastet wird, kann dies zu Leistungsproblemen f\u00fchren und den gesamten Cluster verlangsamen.<\/p>\n<p>Angenommen, du hast einen imagin\u00e4ren Cluster, der aus 2 Shards mit 20000 Chunks (5000 gelten als &#8222;aktiv&#8220;) besteht, und wir m\u00fcssen einen dritten Shard hinzuf\u00fcgen. Dieser 3. Shard wird schlie\u00dflich ein Drittel der aktiven Chunks (und der gesamten Chunks) speichern.<\/p>\n<p>Die Herausforderung besteht darin, herauszufinden, ab wann der Shard keinen zus\u00e4tzlichen Aufwand mehr verursacht und ein Gewinn ist. Wir m\u00fcssen die Last berechnen, die das System bei der Migration der aktiven Chunks auf den neuen Shard erzeugen w\u00fcrde, und wann sie im Vergleich zum Gesamtsystemgewinn vernachl\u00e4ssigbar w\u00e4re.<\/p>\n<p>In den meisten Szenarien ist es relativ leicht vorstellbar, dass diese Migrationen bei einer \u00fcberlasteten Gruppe von Shards noch l\u00e4nger dauern und dass es viel l\u00e4nger dauert, bis unser neu hinzugef\u00fcgter Shard die Schwelle \u00fcberschreitet und ein Nettogewinn wird. Daher ist es am besten, proaktiv zu handeln und die Kapazit\u00e4t zu erh\u00f6hen, bevor es notwendig wird.<\/p>\n<p>Zu den m\u00f6glichen Abhilfestrategien geh\u00f6ren die regelm\u00e4\u00dfige \u00dcberwachung des Clusters und das proaktive Hinzuf\u00fcgen neuer Shards zu Zeiten mit geringem Datenverkehr, damit es weniger Konkurrenz um die Ressourcen gibt. Es wird empfohlen, gezielte &#8222;hei\u00dfe&#8220; Chunks (auf die mehr zugegriffen wird als auf andere) manuell auszugleichen, um die Aktivit\u00e4t schneller auf den neuen Shard zu verlagern.<\/p>\n<h3>5. Unterversorgung von Config-Servern<\/h3>\n<p>Wenn die Konfigurationsserver zu wenig Ressourcen zur Verf\u00fcgung stellen, kann dies zu Leistungsproblemen und Instabilit\u00e4t f\u00fchren. Eine Unterversorgung kann durch eine unzureichende Zuweisung von Ressourcen wie CPU, Arbeitsspeicher oder Speicherplatz entstehen.<\/p>\n<p>Dies kann zu langsamen Abfragen, Timeouts und sogar zu Abst\u00fcrzen f\u00fchren. Um dies zu vermeiden, ist es wichtig, den Config-Servern gen\u00fcgend Ressourcen zuzuweisen, vor allem in gr\u00f6\u00dferen Clustern. Die regelm\u00e4\u00dfige \u00dcberwachung der Ressourcennutzung der Config Server kann dabei helfen, Probleme mit einer unzureichenden Ressourcenzuweisung zu erkennen.<\/p>\n<p>Eine weitere M\u00f6glichkeit, dies zu verhindern, ist die Verwendung von dedizierter Hardware f\u00fcr die Konfigurationsserver, anstatt die Ressourcen mit anderen Clusterkomponenten zu teilen. So kann sichergestellt werden, dass die Konfigurationsserver gen\u00fcgend Ressourcen haben, um ihre Arbeitslast zu bew\u00e4ltigen.<\/p>\n<h3>6. Vers\u00e4umnisse bei der Datensicherung und -wiederherstellung<\/h3>\n<p>Backups sind wichtig, um sicherzustellen, dass die Daten bei einem Ausfall nicht verloren gehen. Datenverluste k\u00f6nnen aus verschiedenen Gr\u00fcnden auftreten, z. B. durch Hardwareausf\u00e4lle, menschliches Versagen oder b\u00f6swillige Angriffe.<\/p>\n<p>Wenn du es vers\u00e4umst, Daten zu sichern und wiederherzustellen, kann das zu Datenverlusten und Ausfallzeiten f\u00fchren. Um diesen Fehler zu vermeiden, solltest du eine <a href=\"https:\/\/kinsta.com\/de\/blog\/mysql-sicherst-database\/\">Sicherungs<\/a>&#8211; und Wiederherstellungsstrategie einrichten, die regelm\u00e4\u00dfige Sicherungen, Testsicherungen und die Wiederherstellung von Daten in einer Testumgebung umfasst.<\/p>\n<h3>7. Vers\u00e4umnis, den Sharded Cluster zu testen<\/h3>\n<p>Bevor du deinen Sharded-Cluster in die Produktion \u00fcberf\u00fchrst, musst du ihn gr\u00fcndlich testen, um sicherzustellen, dass er die erwartete Last und die Abfragen bew\u00e4ltigen kann. Wenn du den Sharded-Cluster nicht testest, kann das zu schlechter Leistung und Abst\u00fcrzen f\u00fchren.<\/p>\n<h2>MongoDB Sharding vs. Clustered Indexes: Was ist effektiver f\u00fcr gro\u00dfe Datenmengen?<\/h2>\n<p>Sowohl MongoDB Sharding als auch geclusterte Indizes sind effektive Strategien f\u00fcr den Umgang mit gro\u00dfen Datenmengen. Aber sie dienen unterschiedlichen Zwecken. Die Wahl des richtigen Ansatzes h\u00e4ngt von den spezifischen Anforderungen deiner Anwendung ab.<\/p>\n<p>Sharding ist eine horizontale Skalierungstechnik, bei der die Daten auf viele Knoten verteilt werden, was sie zu einer effektiven L\u00f6sung f\u00fcr den Umgang mit gro\u00dfen Datenmengen mit hohen Schreibraten macht. Es ist f\u00fcr Anwendungen transparent und erm\u00f6glicht es ihnen, mit MongoDB zu interagieren, als w\u00e4re es ein einziger Server.<\/p>\n<p>Andererseits verbessern geclusterte Indizes die Leistung von Abfragen, die Daten aus gro\u00dfen Datens\u00e4tzen abrufen, da MongoDB die Daten effizienter finden kann, wenn eine Abfrage auf das indizierte Feld passt.<\/p>\n<p>Was ist also effektiver f\u00fcr gr\u00f6\u00dfere Datenmengen? Die Antwort h\u00e4ngt vom jeweiligen Anwendungsfall und den Anforderungen an die Arbeitslast ab.<\/p>\n<p>Wenn die Anwendung einen hohen Schreib- und Abfragedurchsatz erfordert und horizontal skaliert werden muss, ist MongoDB Sharding wahrscheinlich die bessere Option. Clustering-Indizes k\u00f6nnen jedoch effektiver sein, wenn die Anwendung einen hohen Leseaufwand hat und h\u00e4ufig abgefragte Daten in einer bestimmten Reihenfolge organisiert werden m\u00fcssen.<\/p>\n<p>Sowohl Sharding als auch geclusterte Indizes sind leistungsstarke Werkzeuge f\u00fcr die <a href=\"https:\/\/kinsta.com\/de\/blog\/adminer\/\">Verwaltung<\/a> gro\u00dfer Datenmengen in MongoDB. Entscheidend ist, dass du die Anforderungen deiner Anwendung und die Merkmale der Arbeitslast sorgf\u00e4ltig analysierst, um den besten Ansatz f\u00fcr deinen speziellen Anwendungsfall zu finden.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Ein Sharded-Cluster ist eine leistungsstarke Architektur, die gro\u00dfe Datenmengen verarbeiten und horizontal skalieren kann, um den Anforderungen wachsender Anwendungen gerecht zu werden. Der Cluster besteht aus Shards, Konfigurationsservern, Mongos-Prozessen und Client-Anwendungen.<\/p>\n<p>Die Daten werden anhand eines sorgf\u00e4ltig ausgew\u00e4hlten Shard-Schl\u00fcssels partitioniert, um eine effiziente Verteilung und Abfrage zu gew\u00e4hrleisten. Durch die Nutzung von Sharding k\u00f6nnen Anwendungen eine hohe Verf\u00fcgbarkeit, eine verbesserte Leistung und eine effiziente Nutzung von Hardwareressourcen erreichen. Die Wahl des richtigen Sharding-Schl\u00fcssels ist entscheidend f\u00fcr die gleichm\u00e4\u00dfige Verteilung der Daten.<\/p>\n<p><em>Was denkst du \u00fcber MongoDB und die Praxis des Shardings von Datenbanken? Gibt es einen Aspekt des Shardings, den wir deiner Meinung nach h\u00e4tten behandeln sollen? Lass es uns in den Kommentaren wissen!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der heutigen datengesteuerten Welt, in der das Volumen und die Komplexit\u00e4t der Daten in einem noch nie dagewesenen Tempo wachsen, ist der Bedarf an robusten &#8230;<\/p>\n","protected":false},"author":199,"featured_media":64709,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[991],"class_list":["post-64708","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-web-entwicklungs-tools"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>MongoDB Sharding: Ein umfassender Leitfaden<\/title>\n<meta name=\"description\" content=\"MongoDB Sharding erm\u00f6glicht es MongoDB, Abfragen durchzuf\u00fchren, ohne den Server stark zu belasten, indem es Sammlungen aufteilt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ein umfassender Leitfaden zum Verst\u00e4ndnis von MongoDB Sharding\" \/>\n<meta property=\"og:description\" content=\"MongoDB Sharding erm\u00f6glicht es MongoDB, Abfragen durchzuf\u00fchren, ohne den Server stark zu belasten, indem es Sammlungen aufteilt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-08T09:54:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-25T15:20:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"MongoDB Sharding erm\u00f6glicht es MongoDB, Abfragen durchzuf\u00fchren, ohne den Server stark zu belasten, indem es Sammlungen aufteilt.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Ein umfassender Leitfaden zum Verst\u00e4ndnis von MongoDB Sharding\",\"datePublished\":\"2023-08-08T09:54:05+00:00\",\"dateModified\":\"2023-08-25T15:20:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/\"},\"wordCount\":4023,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/\",\"name\":\"MongoDB Sharding: Ein umfassender Leitfaden\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg\",\"datePublished\":\"2023-08-08T09:54:05+00:00\",\"dateModified\":\"2023-08-25T15:20:23+00:00\",\"description\":\"MongoDB Sharding erm\u00f6glicht es MongoDB, Abfragen durchzuf\u00fchren, ohne den Server stark zu belasten, indem es Sammlungen aufteilt.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webentwicklungs-Tools\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/web-entwicklungs-tools\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Ein umfassender Leitfaden zum Verst\u00e4ndnis von MongoDB Sharding\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/de\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MongoDB Sharding: Ein umfassender Leitfaden","description":"MongoDB Sharding erm\u00f6glicht es MongoDB, Abfragen durchzuf\u00fchren, ohne den Server stark zu belasten, indem es Sammlungen aufteilt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/","og_locale":"de_DE","og_type":"article","og_title":"Ein umfassender Leitfaden zum Verst\u00e4ndnis von MongoDB Sharding","og_description":"MongoDB Sharding erm\u00f6glicht es MongoDB, Abfragen durchzuf\u00fchren, ohne den Server stark zu belasten, indem es Sammlungen aufteilt.","og_url":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-08-08T09:54:05+00:00","article_modified_time":"2023-08-25T15:20:23+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"MongoDB Sharding erm\u00f6glicht es MongoDB, Abfragen durchzuf\u00fchren, ohne den Server stark zu belasten, indem es Sammlungen aufteilt.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Jeremy Holcombe","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Ein umfassender Leitfaden zum Verst\u00e4ndnis von MongoDB Sharding","datePublished":"2023-08-08T09:54:05+00:00","dateModified":"2023-08-25T15:20:23+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/"},"wordCount":4023,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/","url":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/","name":"MongoDB Sharding: Ein umfassender Leitfaden","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg","datePublished":"2023-08-08T09:54:05+00:00","dateModified":"2023-08-25T15:20:23+00:00","description":"MongoDB Sharding erm\u00f6glicht es MongoDB, Abfragen durchzuf\u00fchren, ohne den Server stark zu belasten, indem es Sammlungen aufteilt.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/mongodb-sharding.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/mongodb-sharding\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"Webentwicklungs-Tools","item":"https:\/\/kinsta.com\/de\/thema\/web-entwicklungs-tools\/"},{"@type":"ListItem","position":3,"name":"Ein umfassender Leitfaden zum Verst\u00e4ndnis von MongoDB Sharding"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/de\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/64708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=64708"}],"version-history":[{"count":12,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/64708\/revisions"}],"predecessor-version":[{"id":65242,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/64708\/revisions\/65242"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64708\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64708\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64708\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64708\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64708\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64708\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64708\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64708\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64708\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/64709"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=64708"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=64708"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=64708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}