Amazon DocumentDB DocumentDB-Indizes verwalten - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Amazon DocumentDB DocumentDB-Indizes verwalten

Amazon DocumentDB DocumentDB-Indexerstellung

Für die Erstellung von Indizes in Amazon DocumentDB müssen eine Reihe von Entscheidungen getroffen werden:

  • Wie schnell muss es abgeschlossen werden?

  • Kann während der Erstellung nicht auf die Sammlung zugegriffen werden?

  • Wie viel Rechenleistung einer Instanz kann dem Build zugewiesen werden?

  • Welche Art von Index sollte erstellt werden?

Dieser Abschnitt hilft Ihnen bei der Beantwortung dieser Fragen und enthält die Befehle und Überwachungsbeispiele zum Erstellen eines Amazon DocumentDB DocumentDB-Indexes für Ihre instanzbasierte Clustersammlung.

Richtlinien

Die folgenden Richtlinien enthalten grundlegende Grenzwerte und Kompromisse bei der Konfiguration bei der Erstellung neuer Indizes:

  • Unterstützung für Amazon DocumentDB DocumentDB-Versionen — Während die Single-Worker-Indizierung in allen Amazon DocumentDB DocumentDB-Versionen unterstützt wird, wird die Multi-Worker-Indizierung nur in den Amazon DocumentDB DocumentDB-Versionen 4.0 und 5.0 unterstützt.

  • Leistungseinbußen — Eine Erhöhung der Anzahl der Worker bei der Indexerstellung erhöht die CPU-Auslastung und die Lese-I/O auf der primären Instance Ihrer Amazon DocumentDB DocumentDB-Datenbank. Die Ressourcen, die für die Erstellung eines neuen Indexes benötigt werden, stehen Ihrem laufenden Workload nicht zur Verfügung.

  • Elastische Cluster — Parallele Indizierung wird auf elastischen Amazon DocumentDB-Clustern nicht unterstützt.

  • Maximale Anzahl an Workern — Die maximale Anzahl von Workern, die Sie konfigurieren können, hängt von der Größe Ihrer primären Instance in Ihrem Datenbank-Cluster ab. Das ist die Hälfte der Gesamtzahl der vCPUs auf der primären Instance Ihres Datenbank-Clusters. Sie können beispielsweise maximal 32 Worker auf einer db.r6g.16xlarge-Instance mit 64 vCPUs ausführen.

    Anmerkung

    Parallele Worker werden in den Instance-Klassen 2xlarge und niedriger nicht unterstützt.

  • Mindestanzahl an Workern — Die Mindestanzahl an Workern, die Sie konfigurieren können, ist eins. Die Standardeinstellung für die Indexerstellung auf instanzbasierten Clustern ist zwei Worker. Sie können die Anzahl der Worker jedoch auf einen reduzieren, indem Sie die Option „Worker-Threads“ verwenden. Dadurch wird der Prozess mit einem einzigen Worker ausgeführt.

  • Indexkomprimierung — Amazon DocumentDB unterstützt keine Indexkomprimierung. Die Datengrößen für Indizes sind möglicherweise größer als bei Verwendung anderer Optionen.

  • Indizierung mehrerer Sammlungen — Die Hälfte der vCPUs auf der primären Instance Ihres Datenbank-Clusters kann für konfigurierte Worker verwendet werden, die Indexerstellung für mehrere Sammlungen durchführen.

  • IndextypenIn diesem Blogbeitrag finden Sie eine vollständige Erklärung der unterstützten Indextypen in Amazon DocumentDB.

Erste Schritte

Verwenden Sie den createIndexes Befehl, um die Indexerstellung für eine Sammlung zu starten. Standardmäßig führt der Befehl zwei parallel Worker aus, wodurch die Geschwindigkeit des Indexerstellungsprozesses um das Zweifache erhöht wird.

Der folgende Befehlsprozess zeigt beispielsweise, wie ein Index für das Feld „user_name“ in einem Dokument erstellt und die Geschwindigkeit des Indizierungsvorgangs auf vier Worker erhöht wird:

  1. Erstellen Sie Indizes mit zwei parallel Workern auf dem Cluster:

    db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx"}]})
  2. Um die Geschwindigkeit der Indexerstellung zu optimieren, können Sie die Anzahl der Worker mithilfe der Option „Worker-Threads“ ("workers":<number>) im db.runCommand createIndexes Befehl angeben.

    Erhöhen Sie die Geschwindigkeit des Prozesses auf vier parallel Mitarbeiter:

    db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "workers":4}]})
    Anmerkung

    Je höher die Anzahl der Mitarbeiter, desto schneller schreitet die Indexerstellung voran. Je höher jedoch die Anzahl der Worker steigt, desto höher steigt die Auslastung der vCPUs und der Lese-I/O Ihrer primären Instance. Stellen Sie sicher, dass Ihr Cluster ausreichend bereitgestellt ist, um die erhöhte Belastung zu bewältigen, ohne andere Workloads zu beeinträchtigen.

Status des Indexierungsfortschritts

Bei der Indexerstellung werden Sammlungen initialisiert, gescannt, Schlüssel sortiert und schließlich Schlüssel mithilfe eines Indexgenerators eingefügt. Der Prozess besteht aus bis zu sechs Phasen, wenn Sie ihn im Vordergrund ausführen, und bis zu neun Phasen, wenn Sie ihn im Hintergrund ausführen. Sie können Statusmetriken wie die prozentuale Fertigstellung, die Gesamtzahl der gescannten Speicherblöcke, die sortierten Schlüssel und die eingefügten Schlüssel Schritt für Schritt anzeigen.

Überwachen Sie den Fortschritt des Indizierungsprozesses, indem Sie den db.currentOp() Befehl in der Mongo-Shell verwenden. Ein 100-prozentiger Abschluss der letzten Phase zeigt, dass alle Indizes erfolgreich erstellt wurden:

db.currentOp({"command.createIndexes": { $exists : true } })

Typen der Indexerstellung

Die vier Arten von Indexerstellungen sind:

  • Vordergrund — Die Indexerstellung im Vordergrund blockiert alle anderen Datenbankoperationen, bis der Index erstellt ist. Der Amazon DocumentDB DocumentDB-Vordergrundaufbau besteht aus fünf Phasen.

  • Vordergrund (einzigartig) — Index-Builds im Vordergrund für ein einzelnes Dokument (eindeutig) blockieren andere Datenbankoperationen wie reguläre Vordergrund-Builds. Im Gegensatz zum einfachen Vordergrund-Build verwendet der Build „Unique“ eine zusätzliche Stufe (Sortierung von Schlüsseln 2), um nach doppelten Schlüsseln zu suchen. Der (einzigartige) Build im Vordergrund besteht aus sechs Stufen.

  • Hintergrund — Die Indexerstellung im Hintergrund ermöglicht die Ausführung anderer Datenbankoperationen im Vordergrund, während der Index erstellt wird. Der Amazon DocumentDB DocumentDB-Hintergrundaufbau besteht aus acht Phasen.

  • Hintergrund (einzigartig) — Index-Builds für ein einzelnes Dokument (einzigartig) im Hintergrund ermöglichen die Ausführung anderer Datenbankoperationen im Vordergrund, während der Index erstellt wird. Im Gegensatz zum grundlegenden Hintergrundbuild verwendet der Unique-Build eine zusätzliche Phase (Sortierung von Schlüsseln 2), um nach doppelten Schlüsseln zu suchen. Der (einzigartige) Background-Build besteht aus neun Stufen.

Phasen der Indexerstellung

Stufe Vordergrund Vordergrund (einzigartig) Hintergrund Hintergrund (einzigartig)

Initialisieren

1

1

1

1

Gebäudeindex: initialisieren

2

2

2

2

Gebäudeindex: Sammlung scannen

3

3

3

3

Gebäudeindex: Schlüssel sortieren 1

4

4

4

4

Gebäudeindex: Sortieren von Schlüsseln 2

5

5

Gebäudeindex: Schlüssel einfügen

5

6

5

6

validieren: Index scannen

6

7

validieren: Tupel sortieren

7

8

validieren: Sammlung scannen

8

9

  • initialisieren — CreateIndex bereitet den Index Builder vor. Diese Phase sollte sehr kurz sein.

  • Index erstellen: Initialisieren — Der Index Builder bereitet die Erstellung des Indexes vor. Diese Phase sollte sehr kurz sein.

  • Index erstellen: Sammlung scannen — Der Index Builder führt einen Sammlungsscan durch, um Indexschlüssel zu sammeln. Die Maßeinheit ist „Blöcke“.

    Anmerkung

    Wenn mehr als ein Worker für den Indexaufbau konfiguriert ist, wird dieser in dieser Phase angezeigt. Die Phase „Erfassung des Scannens“ ist die einzige Phase, in der mehrere Worker während des Indexerstellungsprozesses verwendet werden. In allen anderen Phasen wird ein einziger Worker angezeigt.

  • Index erstellen: Schlüssel sortieren 1 — Der Indexgenerator sortiert die gesammelten Indexschlüssel. Die Maßeinheit ist „Schlüssel“.

  • Index erstellen: Schlüssel sortieren 2 — Der Index Builder sortiert die gesammelten Indexschlüssel, die toten Tupeln entsprechen. Diese Phase ist nur für die Erstellung eines eindeutigen Indexes vorgesehen. Die Maßeinheit ist „Schlüssel“.

  • Gebäudeindex: Schlüssel einfügen — Der Index Builder fügt Indexschlüssel in den neuen Index ein. Die Maßeinheit ist „Schlüssel“.

  • validieren: Index scannen — CreateIndex durchsucht den Index nach Schlüsseln, die validiert werden müssen. Die Maßeinheit ist „Blöcke“.

  • validieren: Tupel sortieren — CreateIndex sortiert die Ausgabe der Indexscanphase.

  • validieren: Sammlung scannen — CreateIndex scannt die Sammlung, um die Indexschlüssel zu validieren, die in den beiden vorherigen Phasen gefunden wurden. Die Maßeinheit ist „Blöcke“.

Beispiel für die Ausgabe einer Indexerstellung

Im folgenden Ausgabebeispiel (Indexerstellung im Vordergrund) wird der Status der Indexerstellung angezeigt. Das Feld „msg“ fasst den Baufortschritt zusammen, indem es die Phase und den Prozentsatz der Fertigstellung des Builds angibt. Das Feld „Arbeiter“ gibt die Anzahl der Arbeiter an, die in dieser Phase der Indexerstellung eingesetzt wurden. Das Feld „Fortschritt“ zeigt die tatsächlichen Zahlen, die zur Berechnung des Prozentsatzes der Fertigstellung verwendet wurden.

Anmerkung

Die Felder „currentIndexBuildName“, „msg“ und „progress“ werden in Amazon DocumentDB Version 4.0 nicht unterstützt.

{ "inprog" : [{ … "command": { "createIndexes": "test", "indexes": [{ "v": 2, "key": { "user_name": 1 }, "name": "user_name_1" }], "lsid": { "id": UUID(“094d0fba-8f41-4373-82c3-7c4c7b5ff13b”) }, "$db": "test" }, "currentIndexBuildName": user_name_1, "msg": "Index Build: building index number_1, stage 6/6 building index: 656860/1003520 (keys) 65%", "workers": 1, "progress": { "done": 656861, "total": 1003520 }, … ], "ok" : 1 }