Langkah 6: Buat kueri data - AWS Panduan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Langkah 6: Buat kueri data

Setelah Anda menentukan pola akses dan mendesain model data Anda, Anda dapat melakukan kueri data hierarkis dalam database DynamoDB. Sebagai praktik terbaik untuk menghemat biaya dan membantu memastikan kinerja, contoh berikut hanya menggunakan operasi kueri tanpaScan.

  • Temukan nenek moyang suatu komponen.

    Untuk menemukan leluhur (induk, kakek-nenek, kakek buyut, dan sebagainya) dari komponen CM8, kueri tabel dasar menggunakan. ComponentId = "CM8" Kueri akan mengembalikan catatan berikut.

    Untuk mengurangi ukuran data hasil, Anda dapat menggunakan ekspresi proyeksi untuk mengembalikan hanya Path atribut.

    ComponentId

    ParentId

    GraphId

    Jalan

    CM8

    CM4

    CM1 #1

    CM1 | CM2 | CM4 | CM8

    Jalan

    CM1 | CM2 | CM4 | CM8

    Sekarang, pisahkan jalur menggunakan pipa (“|”), dan ambil komponen N-1 pertama untuk mendapatkan leluhur.

    Hasil kueri: Nenek moyang CM8 adalah CM1, CM2, CM4.

  • Temukan anak-anak langsung dari suatu komponen.

    Untuk mendapatkan semua turunan langsung, atau satu tingkat hilir, komponen untuk komponen CM2, kueri GSI1 menggunakan. ParentId = "CM2" Kueri akan mengembalikan catatan berikut.

    ParentId

    ComponentId

    CM2

    CM4

    CM5

  • Temukan semua komponen turunan hilir menggunakan komponen tingkat atas.

    Untuk mendapatkan semua komponen turunan, atau hilir, untuk komponen tingkat atas CM1, kueri GSI2 menggunakan GraphId = "CM1#1" danbegins_with("Path", "CM1|"), dan gunakan ekspresi proyeksi dengan. ComponentId Ini akan mengembalikan semua komponen yang terkait dengan pohon itu.

    Contoh ini memiliki satu pohon, dengan CM1 sebagai komponen teratas. Pada kenyataannya, Anda bisa memiliki jutaan komponen tingkat atas dalam tabel yang sama.

    GraphId

    ComponentId

     

    CM1 #1

    CM2

    CM3

    CM4

    CM5

    CM8

    CM9

    CM10

    CM6

    CM7

  • Temukan semua komponen turunan hilir menggunakan komponen tingkat menengah.

    Untuk mendapatkan semua komponen turunan, atau hilir, secara rekursif untuk komponen CM2, Anda memiliki dua opsi. Anda dapat melakukan kueri secara rekursif tingkat demi level, atau Anda dapat menanyakan indeks GSI2.

    • Kueri GSI1, tingkat demi level, secara rekursif, hingga mencapai tingkat terakhir komponen anak.

      1. Kueri GSI1 menggunakan. ParentId = "CM2" Ini akan mengembalikan catatan berikut.

        ParentId

        ComponentId

        CM2

        CM4

        CM5

      2. Sekali lagi, kueri GSI1 menggunakan. ParentId = "CM4" Ini akan mengembalikan catatan berikut.

        ParentId

        ComponentId

        CM4

        CM8

        CM9

      3. Sekali lagi, kueri GSI1 menggunakan. ParentId = "CM5" Ini akan mengembalikan catatan berikut.

        Lanjutkan loop: Kueri untuk masing-masing ComponentId sampai Anda mencapai level terakhir. Ketika kueri yang menggunakan ParentId = "<ComponentId>" tidak mengembalikan hasil apa pun, hasil sebelumnya berasal dari tingkat terakhir pohon.

        ParentId

        ComponentId

        CM5

        CM10

      4. Gabungkan semua hasil.

         

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

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

    • Query GSI2, yang menyimpan pohon hierarkis untuk komponen tingkat atas (mobil, atau CM1).

      1. Pertama, temukan komponen tingkat atas atau leluhur teratas dan CM2Path. Untuk itu, kueri tabel dasar dengan menggunakan ComponentId = "CM2" untuk menemukan jalur komponen itu di pohon hierarkis. Pilih atribut GraphId dan Pat h. Kueri akan mengembalikan catatan berikut.

        GraphId

        Jalan

        CM1 #1

        CM1 | CM2

      2. Kueri GSI2 dengan menggunakan. GraphId = "CM1#1" AND BEGINS_WITH("Path", "CM1|CM2|") Kueri akan mengembalikan hasil berikut.

        GraphId

        Jalan

        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. Pilih ComponentId atribut untuk mengembalikan semua komponen anak untuk CM2.