Fase 6: Creare interrogazioni di dati - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Fase 6: Creare interrogazioni di dati

Dopo aver definito i modelli di accesso e progettato il modello di dati, è possibile interrogare i dati gerarchici nel database DynamoDB. Come best practice per risparmiare sui costi e contribuire a garantire le prestazioni, negli esempi seguenti viene utilizzata solo l'operazione di interrogazione che non è prevista. Scan

  • Trova gli antenati di un componente.

    Per trovare gli antenati (padre, nonno, bisnonno e così via) del componente CM8, esegui una query sulla tabella di base usando ComponentId = "CM8". La query restituirà il seguente record.

    Per ridurre la dimensione dei dati dei risultati, puoi utilizzare un'espressione di proiezione per restituire solo l'attributo Path.

    ComponentId

    ParentId

    GraphId

    Path

    CM8

    CM4

    CM1#1

    CM1|CM2|CM4|CM8

    Path

    CM1|CM2|CM4|CM8

    Ora, dividi il percorso usando la pipe («|») e prendi i primi componenti N-1 per ottenere gli antenati.

    Risultato della query: gli antenati di CM8 sono CM1, CM2, CM4.

  • Trova i figli immediati di un componente.

    Per ottenere tutti i componenti secondari immediati, o quelli a valle di un livello, per il componente CM2, interrogate GSI1 utilizzando. ParentId = "CM2" La query restituirà il seguente record.

    ParentId

    ComponentId

    CM2

    CM4

    CM5

  • Trova tutti i componenti secondari a valle utilizzando un componente di primo livello.

    Per ottenere tutti i componenti secondari o a valle del componente di primo livello CM1, interrogate GSI2 utilizzando GraphId = "CM1#1" and e e begins_with("Path", "CM1|") utilizzate un'espressione di proiezione con. ComponentId Restituirà tutti i componenti relativi a quell'albero.

    Questo esempio ha un solo albero in cui il componente di primo livello è CM1. In realtà, potresti avere milioni di componenti di livello superiore nella stessa tabella.

    GraphId

    ComponentId

     

    CM1#1

    CM2

    CM3

    CM4

    CM5

    CM8

    CM9

    CM10

    CM6

    CM7

  • Trova tutti i componenti secondari a valle utilizzando un componente di livello intermedio.

    Per ottenere tutti i componenti secondari, o a valle, in modo ricorsivo per il componente CM2, hai due opzioni. Puoi eseguire query ricorrenti livello per livello oppure eseguire query sull'indice GSI2.

    • Esegui una query su GSI1, livello per livello, in modo ricorrente, fino a raggiungere l'ultimo livello di componenti figlio.

      1. Esegui una query su GSI1 tramite ParentId = "CM2". Restituirà il seguente record.

        ParentId

        ComponentId

        CM2

        CM4

        CM5

      2. Esegui di nuovo una query su GSI1 tramite ParentId = "CM4". Restituirà il seguente record.

        ParentId

        ComponentId

        CM4

        CM8

        CM9

      3. Esegui di nuovo una query su GSI1 tramite ParentId = "CM5". Restituirà il seguente record.

        Continua il ciclo: esegui una query per ciascun ComponentId fino a raggiungere l'ultimo livello. Quando una query che utilizza ParentId = "<ComponentId>" non restituisce alcun risultato, il risultato precedente proveniva dall'ultimo livello dell'albero.

        ParentId

        ComponentId

        CM5

        CM10

      4. Unisci tutti i risultati.

         

        risultato= [CM4, CM5] + [CM8, CM9] + [CM10]

                 = [CM4, CM5, CM8, CM9, CM10]

    • Esegui una query su GSI2, che archivia un albero gerarchico per un componente di livello superiore (un'automobile o CM1).

      1. Innanzitutto, trova il componente di livello superiore o l'antenato principale e Path di CM2. Per farlo, esegui una query sulla tabella di base usando ComponentId = "CM2" per trovare il percorso di quel componente nell'albero gerarchico. Seleziona gli attributi e h. GraphId Pat La query restituirà il seguente record.

        GraphId

        Path

        CM1#1

        CM1|CM2

      2. Interroga GSI2 utilizzando. GraphId = "CM1#1" AND BEGINS_WITH("Path", "CM1|CM2|") La query restituirà i seguenti risultati.

        GraphId

        Path

        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. Seleziona l'attributo ComponentId per restituire tutti i componenti figlio per CM2.