Schritt 6: Erstellen von Datenabfragen - AWS Präskriptive Leitlinien

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 abParentId = "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 ab begins_with("Path", "CM1|")und verwenden Sie einen 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 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.

      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 GraphId und Path aus. Die Abfrage gibt die folgenden Ergebnisse zurück.

        GraphId

        Pfad

        CM1#1

        CM1|CM2

      2. Fragen Sie GSI2 mit abGraphId = "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.