MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Eine Einführung in die Grundlagen der MongoDB-Zone

MongoDB-Zonen

Um MongoDB-Zonen zu verstehen, müssen wir zunächst verstehen, was eine Zone ist:eine Gruppe von Shards, die auf einem bestimmten Satz von Tags basiert.

MongoDB-Zonen helfen bei der Verteilung von Chunks basierend auf Tags über Shards hinweg. Alle Arbeiten (Lese- und Schreibvorgänge) im Zusammenhang mit Dokumenten innerhalb einer Zone werden auf Shards ausgeführt, die mit dieser Zone übereinstimmen.

Es kann verschiedene Szenarien geben, in denen sich fragmentierte Cluster (zonenbasiert) als sehr nützlich erweisen können. Sagen wir:

  • Eine geografisch verteilte Anwendung kann sowohl das Frontend als auch den Datenspeicher erfordern
  • Eine Anwendung hat eine n-Tier-Architektur, sodass einige Datensätze von einer Hardware höherer Stufe (niedrige Latenz) abgerufen werden, während andere von einer Hardware niedriger Stufe (hohe Latenz) abgerufen werden könnten

Vorteile der Verwendung von MongoDB-Zonen

Mithilfe von MongoDB-Zonen können Datenbankadministratoren Tiered-Storage-Lösungen erstellen, die den Datenlebenszyklus unterstützen, wobei häufig verwendete Daten im Arbeitsspeicher gespeichert, weniger verwendete Daten auf dem Server gespeichert und zum richtigen Zeitpunkt archivierte Daten offline genommen werden.

So richten Sie Zonen ein

In Sharding-Clustern können Sie Zonen erstellen, die eine Gruppe von Shards darstellen, und dieser Zone einen oder mehrere Bereiche von Shard-Schlüsselwerten zuordnen. MongoDB leitet alle Lese- und Schreibvorgänge, die in einen Zonenbereich gelangen, nur an die Shards innerhalb der Zone weiter. Sie können jede Zone mit einem oder mehreren Shards im Cluster verknüpfen und ein Shard kann mit einer beliebigen Anzahl von Zonen verknüpft werden.

Einige der häufigsten Bereitstellungsmuster, bei denen Zonen angewendet werden können, lauten wie folgt:

  • Isolieren Sie eine bestimmte Teilmenge von Daten auf einem bestimmten Satz von Shards.
  • Indem sichergestellt wird, dass sich die relevantesten Daten auf Shards befinden, die den Anwendungsservern geografisch am nächsten sind.
  • Leiten Sie Daten basierend auf der Leistung der Shard-Hardware an die Shards weiter.

Das folgende Bild zeigt einen Sharding-Cluster mit drei Shards und zwei Zonen. Die A-Zone stellt einen Bereich mit einer Untergrenze von 0 und einer Obergrenze von 10 dar. Die B-Zone zeigt einen Bereich mit einer Untergrenze von 10 und einer Obergrenze von 20. Die Shards ROT und BLAU haben die A-Zone. Shard BLUE hat auch die B-Zone. Mit Shard GREEN sind keine Zonen verbunden. Der Cluster befindet sich in einem stabilen Zustand und keine Chunks verletzen eine der Zonen

Reichweite einer MongoDB-Zone

Jede einzelne Zone deckt einen oder mehrere Bereiche von Shard-Schlüsselwerten ab. Jeder Bereich, den eine Zone abdeckt, schließt immer seine Untergrenze ein und schließt seine Obergrenze aus.

Denken Sie daran: Zonen können sich keine Bereiche teilen und sie dürfen keine sich überschneidenden Bereiche haben.

Hinzufügen von Shards zu einer Zone

Die Methode sh.addShardTag() wird verwendet, um einem Shard Zonen hinzuzufügen. Ein einzelner Shard kann mehrere Zonen haben, und mehrere Shards können auch dieselbe Zone haben. Das folgende Beispiel fügt die Zone A einem Shard hinzu.

sh.addShardTag("shard0000", "A")

Fragmente aus einer Zone entfernen

Um eine Zone aus einem Shard zu entfernen, wird die Methode sh.removeShardTag() verwendet. Das folgende Beispiel entfernt die Zone A aus einem Shard.

sh.removeShardTag("shard0002", "A")
Multiplenines Become a MongoDB DBA – Bringing MongoDB to ProductionErfahren Sie, was Sie wissen müssen, um MongoDBDownload for Free bereitzustellen, zu überwachen, zu verwalten und zu skalieren

Tipps für MongoDB-Zonen

Dokumente einfach halten

MongoDB ist eine schemafreie Datenbank. Das bedeutet, dass standardmäßig kein vordefiniertes Schema vorhanden ist. Wir können in neueren Versionen ein vordefiniertes Schema hinzufügen, aber es ist nicht zwingend erforderlich. Unterschätzen Sie nicht die Schwierigkeiten, die beim Arbeiten mit Dokumenten und Arrays auftreten, da es sehr schwierig werden kann, Ihre Daten im anwendungsseitigen/ETL-Prozess zu parsen. Außerdem können Arrays die Replikationsleistung beeinträchtigen:Für jede Änderung im Array werden alle Array-Werte repliziert.

Die beste Hardware ist nicht immer die beste Option

Die Verwendung guter Hardware trägt definitiv zu einer guten Leistung bei. Aber was könnte in einer Umgebung passieren, wenn eine Instanz einer großen Maschine stirbt? Die Antwort lautet „Failover“.

Mehrere kleine Maschinen (anstelle von einer oder zwei) in einer verteilten Umgebung zu haben, kann sicherstellen, dass Ausfälle nur wenige Teile des Shards betreffen und von der Anwendung kaum oder gar nicht wahrgenommen werden. Aber gleichzeitig implizieren mehr Maschinen eine hohe Ausfallwahrscheinlichkeit. Berücksichtigen Sie diesen Kompromiss beim Entwerfen Ihrer Umgebung. Die richtigen Entscheidungen wirken sich auf die Leistung aus.

Arbeitssatz

Wie groß ist das Workingset? Normalerweise verwendet eine Anwendung nicht alle Daten. Manche Daten werden oft aktualisiert, andere nicht. Passt Ihr Arbeitsdatensatz in den Arbeitsspeicher? Eine optimale Leistung wird erreicht, wenn sich der gesamte Arbeitsdatensatz im RAM befindet.