View a markdown version of this page

Schritt 6: Datenabfragen erstellen - AWS Prescriptive Guidance

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: Datenabfragen erstellen

Nachdem Sie Ihre Zugriffsmuster definiert und Ihr Datenmodell entworfen haben, können Sie hierarchische Daten in der DynamoDB-Datenbank abfragen. Als bewährte Methode, um Kosten zu sparen und die Leistung sicherzustellen, verwenden die folgenden Beispiele nur den Abfragevorgang ohne. Scan

  • Findet Vorfahren 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 verwenden Sie die ersten N-1 Komponenten, um Vorfahren zu ermitteln.

    Abfrageergebnis: Die Vorfahren von CM8 sind CM1, CM2, CM4.

  • Findet unmittelbar untergeordnete Elemente einer Komponente.

    Um alle unmittelbar untergeordneten Komponenten der CM2-Komponente abzurufen, fragen Sie GSI1 mit. ParentId = "CM2" Die Abfrage gibt die folgenden Ergebnisse zurück.

    ParentId

    ComponentId

    CM2

    CM4

    CM5

  • Suchen Sie mithilfe einer Komponente der obersten Ebene nach allen nachgeschalteten untergeordneten Komponenten.

    Um alle untergeordneten oder nachgelagerten Komponenten für die Komponente CM1 der obersten Ebene abzurufen, fragen Sie GSI2 mit GraphId = "CM1#1" und ab und verwenden Sie einen begins_with("Path", "CM1|") Projektionsausdruck mit. ComponentId 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 mithilfe einer Komponente der mittleren Ebene nach allen untergeordneten Komponenten.

    Um alle untergeordneten oder nachgelagerten Komponenten rekursiv für die 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.

      1. Fragen Sie GSI1 mit ParentId = "CM2" ab. Das wird die folgenden Ergebnisse zurückgeben.

        ParentId

        ComponentId

        CM2

        CM4

        CM5

      2. Fragen Sie GSI1 erneut mit ParentId = "CM4" ab. Das wird die folgenden Ergebnisse zurückgeben.

        ParentId

        ComponentId

        CM4

        CM8

        CM9

      3. 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 mit ParentId = "<ComponentId>" keine Ergebnisse zurückgibt, stammt das vorherige Ergebnis aus der letzten Ebene des Baums.

        ParentId

        ComponentId

        CM5

        CM10

      4. 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.

      1. Suchen Sie zunächst die Komponente der obersten Ebene oder den obersten Vorfahren und Path von CM2. Fragen Sie dazu die Basistabelle ab, indem Sie ComponentId = "CM2" verwenden, um den Pfad dieser Komponente in der hierarchischen Struktur zu finden. Wählen Sie die Attribute und h aus. GraphId Pat Die Abfrage gibt die folgenden Ergebnisse zurück.

        GraphId

        Pfad

        CM1#1

        CM1|CM2

      2. Fragen Sie GSI2 ab, indem Sie. 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

      3. Wählen Sie das ComponentId-Attribut, um alle untergeordneten Komponenten für CM2 zurückzugeben.