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.
-
Kueri GSI1 menggunakan.
ParentId = "CM2"
Ini akan mengembalikan catatan berikut.ParentId
ComponentId
CM2
CM4
CM5
-
Sekali lagi, kueri GSI1 menggunakan.
ParentId = "CM4"
Ini akan mengembalikan catatan berikut.ParentId
ComponentId
CM4
CM8
CM9
-
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 menggunakanParentId = "<ComponentId>"
tidak mengembalikan hasil apa pun, hasil sebelumnya berasal dari tingkat terakhir pohon.ParentId
ComponentId
CM5
CM10
-
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).
-
Pertama, temukan komponen tingkat atas atau leluhur teratas dan CM2
Path
. Untuk itu, kueri tabel dasar dengan menggunakanComponentId = "CM2"
untuk menemukan jalur komponen itu di pohon hierarkis. Pilih atributGraphId
danPat
h. Kueri akan mengembalikan catatan berikut.GraphId
Jalan
CM1 #1
CM1 | CM2
-
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
-
Pilih
ComponentId
atribut untuk mengembalikan semua komponen anak untuk CM2.
-
-