Apakah DynamoDB mendukung secondary index?
Ya. DynamoDB mendukung dua jenis secondary index. Global Secondary Index (GSI) punya partition/sort key dan kapasitasnya sendiri (default 20 per tabel, eventually consistent). Local Secondary Index (LSI) berbagi partition key tabelnya dengan sort key yang berbeda, mendukung konsistensi kuat, dan harus didefinisikan saat tabel dibuat.
Global Secondary Index (GSI)
- Punya partition dan sort key sendiri, terlepas dari milik tabelnya.
- Punya throughput provisioned sendiri (atau kapasitas on-demand).
- Hanya pembacaan eventually consistent.
- Bisa ditambah atau dihapus kapan saja; kuota default 20 per tabel.
Sebuah GSI adalah cara Anda mencari item berdasarkan atribut di luar primary key tabelnya.
Local Secondary Index (LSI)
- Berbagi partition key tabelnya, dengan sort key yang berbeda.
- Berbagi throughput tabelnya.
- Mendukung pembacaan strongly consistent.
- Harus dibuat saat tabel dibuat dan tak bisa ditambahkan belakangan.
Dua perbedaan yang bisa Anda ukur
Pembacaan GSI tidak diam-diam diturunkan ketika Anda meminta konsistensi kuat. Ia gagal:
ValidationException: Consistent reads are not supported on global secondary indexes
HTTP 400Query yang sama dengan ConsistentRead: true terhadap sebuah LSI berhasil, dan melaporkan ConsumedCapacity 1.0 sementara pembacaan eventually consistent atas item yang sama melaporkan 0.5. Konsistensi kuat tersedia pada LSI, dengan dua kali lipat read unit.
Perbedaan kedua ada pada penulisan, dan itulah yang muncul di tagihan. Memasukkan satu item identik berukuran 920 byte ke tiga tabel yang hanya berbeda dalam jumlah GSI yang mereka bawa:
0 GSIs ConsumedCapacity 1 table 1
1 GSI ConsumedCapacity 2 table 1, gsi1 1
2 GSIs ConsumedCapacity 3 table 1, gsi1 1, gsi2 1Setiap GSI yang mem-project atribut yang berubah adalah satu penulisan lagi yang Anda bayar. AWS menyatakan aturan yang ditunjukkan angka-angka itu: biaya tulisnya adalah "the sum of write capacity units consumed by writing to the base table and those consumed by updating the global secondary indexes". Projection KEYS_ONLY adalah cara Anda menjaga penulisan kedua itu tetap kecil.
Memilih di antara keduanya
Pakai GSI untuk pola akses baru dan fleksibilitas; pakai LSI saat Anda butuh konsistensi kuat pada urutan alternatif dalam partisi yang sama.
Pelajari lebih lanjut
Bandingkan keduanya di GSI vs LSI dan lihat index projection. Unduh DynoTable untuk melakukan query lewat index Anda.
Referensi
- Using Global Secondary Indexes in DynamoDB — Amazon DynamoDB Developer Guide
- Local secondary indexes — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas; kuotanya diperiksa ulang 2026-07-28.
String error dan nilai ConsumedCapacity-nya ditangkap 2026-07-28 terhadap DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0 dan merupakan keluaran mesin itu sendiri.