Cara Mem-Query DynamoDB dalam Urutan Menurun
Secara default sebuah Query DynamoDB mengembalikan Item dalam urutan sort-key
menaik. Tetapi sebagian besar pola akses "berikan yang terbaru" menginginkan
kebalikannya — terbaru dulu. Tombolnya adalah satu boolean tunggal pada Query:
ScanIndexForward. Setel ke false dan Query yang sama membaca partisi secara
terbalik.
Ini satu parameter, tetapi ia menjebak orang karena mudah dikacaukan dengan mengurutkan hasil setelahnya (yang tidak dilakukan DynamoDB) dan karena namanya terbaca terbalik dari apa yang ia kendalikan.
Bagaimana cara mem-Query DynamoDB dalam urutan menurun?
Setel ScanIndexForward=false pada Query. Secara default DynamoDB mengembalikan Item dalam urutan sort-key menaik; membalik boolean tunggal ini membaca partisi secara terbalik, memberikan hasil terbaru-dulu saat sort key Anda berupa timestamp atau urutan. Ini hanya mengubah pengurutan, bukan Item mana yang cocok, dan pembacaan terbalik berbiaya sama persis dengan pembacaan maju.
ScanIndexForward=true(default) → urutan sort-key menaik.ScanIndexForward=false→ urutan menurun — terbaru-dulu saat sort key Anda berupa timestamp atau urutan.- Ia hanya memengaruhi pengurutan, bukan Item mana yang cocok — condition key tetap yang menentukan itu.
- Ia gratis. Urutan terbalik berbiaya sama dengan urutan maju; DynamoDB membaca urutan tersimpan partisi dalam kedua kasus.
- Gunakan
Limitbersamanya untuk mendapatkan "N terbaru" dalam satu pembacaan murah.
Masalahnya: "tunjukkan yang terbaru dulu"
Misalkan Anda menjalankan papan peringkat multiplayer dan menyimpan event skor tiap pemain di bawah satu partition key, terurut berdasarkan timestamp yang menaik:
PK: GAME#42 SK: SCORE#2026-06-27T10:00:00Z points
PK: GAME#42 SK: SCORE#2026-06-27T10:05:00Z points
PK: GAME#42 SK: SCORE#2026-06-27T10:09:00Z pointsDashboard membutuhkan skor paling baru. Sebuah Query biasa pada GAME#42
mengembalikannya terlama-dulu, jadi Anda mungkin tergoda untuk membaca semuanya dan
membaliknya di aplikasi Anda — boros, dan rusak begitu Anda menambahkan Limit.
DynamoDB dapat menyerahkannya kembali terbaru-dulu secara langsung.
Cara kerja ScanIndexForward
Item dalam sebuah partisi secara fisik disimpan terurut berdasarkan sort key. Sebuah
Query menyusuri urutan itu; ScanIndexForward sekadar memilih arah penyusuran:
true(default) — mulai dari sort key terendah, menyusuri ke atas (menaik).false— mulai dari sort key tertinggi, menyusuri ke bawah (menurun).
Yang krusial, ini adalah properti dari pembacaan, bukan tabel — Item yang sama,
condition key yang sama, hanya terbalik. Dan karena DynamoDB hanya memilih sebuah arah
atas data yang sudah-terurut, pembacaan menurun
sama persis murahnya
dengan yang menaik. Pasangkan dengan Limit=10 dan Anda mendapatkan "10 event skor
paling baru" dalam satu Query berbiaya-minimal.
Satu kehalusan: saat mem-paginasi mundur melalui himpunan hasil menurun, cursor
LastEvaluatedKey/ExclusiveStartKey tetap berfungsi — cukup jaga
ScanIndexForward=false konsisten di setiap halaman scan yang sama, atau arah cursor
dan urutannya akan berselisih.
Membangun query di DynoTable
Untuk merakit condition key itu sendiri (dan melihat map attribute-name/value yang cocok), gunakan DynamoDB expression builder.
Di DynoTable, Anda membaca sebuah Tab lewat key yang dipilih dan mengatur arah pengurutan
pada Tab dengan sebuah toggle — tanpa perlu menulis sendiri ScanIndexForward. Balik toggle
tersebut untuk mempratinjau hasil terbaru-dulu.

Jebakan dan langkah berikutnya
ScanIndexForwardmembalik, ia tidak mengurutkan berdasarkan atribut sembarang. Urutan selalu berdasarkan sort key — untuk mengurutkan berdasarkan hal lain Anda butuh atribut itu sebagai sort key (sering kali lewat sebuah GSI).- Jangan baca-semua-lalu-balik di aplikasi Anda — setel flag-nya dan tambahkan
Limit. - Jaga flag tetap konsisten saat mem-paginasi sebuah scan multi-halaman, atau cursor akan melawan urutannya.
- Ingin numerik terbaru-dulu? Pastikan sort key terurut dengan benar — beri padding nol pada angka agar urutan leksikografis cocok.
- Terkait: strategi sort-key dan paginasi.
Ingin membalik urutan hasil tanpa menyentuh parameter API? Unduh DynoTable dan mem-Query tabel Anda secara langsung.


