Question 28
Domain 3: Design High-Performing ArchitecturesSebuah aplikasi DynamoDB sering melakukan query seperti: - `WHERE status = 'PENDING' ORDER BY created_at DESC` - `WHERE user_id = 123 AND status = 'ACTIVE'` Tabel memiliki `order_id` sebagai partition key. Query-query ini tidak bisa menggunakan table's primary key secara efisien. Fitur DynamoDB mana yang tepat untuk mengoptimalkan queries ini?
Correct answer: C
Explanation
Global Secondary Index (GSI) memungkinkan query memakai partition key dan sort key yang berbeda dari tabel utama, sehingga pola seperti "WHERE status = 'PENDING' ORDER BY created_at DESC" dan "WHERE user_id = 123 AND status = 'ACTIVE'" bisa dioptimalkan. Karena tabel utama memakai "order_id" sebagai partition key, query tersebut tidak efisien tanpa indeks tambahan yang mendukung akses berdasarkan atribut lain.
Why each option is right or wrong
A. DynamoDB DAX — in-memory cache untuk read latency
B. DynamoDB Streams — capture item-level changes
C. **Global Secondary Index (GSI)** — buat index dengan partition key dan sort key yang berbeda dari tabel utama, memungkinkan query patterns yang fleksibel
DynamoDB hanya dapat melakukan query efisien pada key attributes yang ada di tabel atau indeks; dengan tabel ber-partition key `order_id`, pola pencarian berdasarkan `status`, `user_id`, dan pengurutan `created_at` tidak dapat dipenuhi secara optimal oleh primary key utama. Sesuai dokumentasi Amazon DynamoDB tentang Global Secondary Indexes, GSI dapat memakai partition key dan sort key yang berbeda dari tabel asal, sehingga query seperti filter per `status` dengan urutan `created_at DESC` atau kombinasi `user_id` + `status` bisa diarahkan ke indeks yang tepat tanpa scan penuh.
D. DynamoDB On-Demand capacity — scale otomatis saat ada traffic spike