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.
Schritt 6: Erstellen von Datenabfragen
Nachdem Sie Ihre Zugriffsmuster definiert und Ihr Datenmodell entwerfen haben, können Sie hierarchische Daten in der DynamoDB-Datenbank abfragen. Als bewährte Methode, Kosten zu sparen und die Leistung sicherzustellen, verwenden die folgenden Beispiele nur den Abfragevorgang ohne Scan
.
-
Suchen Sie nach Vorgängern einer Komponente.
Um die Vorfahren (Eltern, Großeltern, Urgroßeltern usw.) der CM8-Komponente zu finden, fragen Sie die Basistabelle mit
ComponentId = "CM8"
ab. Die Abfrage gibt die folgenden Ergebnisse zurück.Um die Größe der Ergebnisdaten zu reduzieren, können Sie einen Projektionsausdruck verwenden, um nur das
Path
-Attribut zurückzugeben.ComponentId
ParentId
GraphId
Pfad
CM8
CM4
CM1#1
CM1|CM2|CM4|CM8
Pfad
CM1|CM2|CM4|CM8
Teilen Sie nun den Pfad mithilfe der Pipe („|“) auf und nehmen Sie die ersten N-1-Komponenten, um Vorfahren zu erhalten.
Abfrageergebnis: Die Vorfahren von CM8 sind CM1, CM2, CM4.
-
Finden Sie unmittelbare untergeordnete Elemente einer Komponente.
Um alle unmittelbar untergeordneten oder einstufigen Downstream-Komponenten für die CM2-Komponente abzurufen, fragen Sie GSI1 mit ab
ParentId = "CM2"
. Die Abfrage gibt die folgenden Ergebnisse zurück.ParentId
ComponentId
CM2
CM4
CM5
-
Suchen Sie alle untergeordneten Downstream-Komponenten mithilfe einer Komponente der obersten Ebene.
Um alle untergeordneten oder nachgelagerten Komponenten für die Komponente CM1 der obersten Ebene abzurufen, fragen Sie GSI2 mit
GraphId = "CM1#1"
und abbegins_with("Path", "CM1|")
und verwenden Sie einen Projektionsausdruck mitComponentId
. Es werden alle Komponenten zurückgegeben, die sich auf diesen Baum beziehen.Dieses Beispiel hat einen einzelnen Baum mit CM1 als oberster Komponente. In Wirklichkeit könnten Sie Millionen von Komponenten der obersten Ebene in derselben Tabelle haben.
GraphId
ComponentId
CM1#1
CM2
CM3
CM4
CM5
CM8
CM9
CM10
CM6
CM7
-
Suchen Sie alle untergeordneten Downstream-Komponenten mithilfe einer Komponente der mittleren Ebene.
Um alle untergeordneten oder nachgelagerten Komponenten rekursiv für Komponente CM2 abzurufen, haben Sie zwei Möglichkeiten. Sie können rekursiv Ebene für Ebene abfragen, oder Sie können den GSI2-Index abfragen.
-
Fragen Sie GSI1 Ebene für Ebene rekursiv ab, bis die letzte Ebene der untergeordneten Komponenten erreicht ist.
-
Fragen Sie GSI1 mit
ParentId = "CM2"
ab. Das wird die folgenden Ergebnisse zurückgeben.ParentId
ComponentId
CM2
CM4
CM5
-
Fragen Sie GSI1 erneut mit
ParentId = "CM4"
ab. Das wird die folgenden Ergebnisse zurückgeben.ParentId
ComponentId
CM4
CM8
CM9
-
Fragen Sie GSI1 erneut mit
ParentId = "CM5"
ab. Das wird die folgenden Ergebnisse zurückgeben.Setzen Sie die Schleife fort: Fragen Sie nach jedem
ComponentId
ab bis Sie die letzte Ebene erreicht haben. Wenn eine Abfrage mitParentId = "<ComponentId>"
keine Ergebnisse zurückgibt, stammt das vorherige Ergebnis aus der letzten Ebene des Baums.ParentId
ComponentId
CM5
CM10
-
Führen Sie alle Ergebnisse zusammen.
result=[CM4, CM5] + [CM8, CM9] + [CM10]
= [CM4, CM5, CM8, CM9, CM10]
-
-
Fragen Sie GSI2 ab, in der ein hierarchischer Baum für eine Komponente der obersten Ebene (ein Auto oder CM1) gespeichert wird.
-
Suchen Sie zunächst die Komponente der obersten Ebene oder den obersten Vorfahren und
Path
von CM2. Fragen Sie dazu die Basistabelle ab, indem SieComponentId = "CM2"
verwenden, um den Pfad dieser Komponente in der hierarchischen Struktur zu finden. Wählen Sie die AttributeGraphId
undPat
h aus. Die Abfrage gibt die folgenden Ergebnisse zurück.GraphId
Pfad
CM1#1
CM1|CM2
-
Fragen Sie GSI2 mit ab
GraphId = "CM1#1" AND BEGINS_WITH("Path", "CM1|CM2|")
. Die Abfrage wird die folgenden Ergebnisse zurückgeben.GraphId
Pfad
ComponentId
CM1#1
CM1|CM2|CM4
CM1|CM2|CM5
CM1|CM2|CM4|CM8
CM1|CM2|CM4|CM9
CM1|CM2|CM5|CM10
CM4
CM5
CM8
CM9
CM10
-
Wählen Sie das
ComponentId
-Attribut, um alle untergeordneten Komponenten für CM2 zurückzugeben.
-
-