DynamoDB ikincil indeksleri destekliyor mu?
Evet. DynamoDB iki tür ikincil indeks destekler. Bir Global Secondary Index (GSI) kendi bölüm/sıralama anahtarına ve kapasitesine sahiptir (varsayılan olarak tablo başına 20, nihai tutarlı). Bir Local Secondary Index (LSI) ise tablonun bölüm anahtarını farklı bir sıralama anahtarıyla paylaşır, güçlü tutarlılığı destekler ve tablo oluşturulurken tanımlanmalıdır.
Global Secondary Index (GSI)
- Tablonunkinden bağımsız, kendi bölüm ve sıralama anahtarı.
- Kendi sağlanan verimi (ya da talep üzerine kapasitesi).
- Yalnızca nihai tutarlı okumalar.
- Her zaman eklenip kaldırılabilir; tablo başına varsayılan kota 20.
Bir GSI, öğeleri tablonun birincil anahtarı dışındaki bir özniteliğe göre aramanızın yoludur.
Local Secondary Index (LSI)
- Tablonun bölüm anahtarını paylaşır, farklı bir sıralama anahtarıyla.
- Tablonun verimini paylaşır.
- Güçlü tutarlı okumaları destekler.
- Tablo oluşturulurken yaratılmalıdır ve sonradan eklenemez.
Ölçebileceğiniz iki fark
Bir GSI okuması, güçlü tutarlılık istediğinizde sessizce aşağı düşmez. Başarısız olur:
ValidationException: Consistent reads are not supported on global secondary indexes
HTTP 400Aynı sorgu, bir LSI'ya karşı ConsistentRead: true ile başarılı olur ve aynı öğenin
nihai tutarlı okumasının 0,5 bildirdiği yerde ConsumedCapacity 1,0 bildirir.
Güçlü tutarlılık bir LSI üzerinde mevcuttur — okuma biriminin iki katına.
İkinci fark yazmalardadır ve faturada görünen de odur. Yalnızca kaç GSI taşıdıkları bakımından farklılaşan üç tabloya aynı 920 baytlık öğeyi koymak:
0 GSIs ConsumedCapacity 1 table 1
1 GSI ConsumedCapacity 2 table 1, gsi1 1
2 GSIs ConsumedCapacity 3 table 1, gsi1 1, gsi2 1Değişen bir özniteliği izdüşüren her GSI, ödediğiniz bir yazma daha demektir. AWS,
sayıların gösterdiği kuralı belirtir: yazma maliyeti "the sum of write capacity
units consumed by writing to the base table and those consumed by updating the
global secondary indexes"tir. Bir KEYS_ONLY izdüşümü, o ikinci yazmayı küçük
tutmanın yoludur.
Aralarında seçim yapmak
Yeni erişim desenleri ve esneklik için bir GSI'ya uzanın; aynı bölüm içinde alternatif bir sıralamada güçlü tutarlılığa ihtiyacınız olduğunda bir LSI'ya uzanın.
Daha derine inin
Onları GSI ile LSI içinde karşılaştırın ve indeks izdüşümlerine bakın. İndeksleriniz üzerinden sorgulamak için DynoTable'ı indirin.
Kaynaklar
- 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
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı; kotalar 2026-07-28 tarihinde yeniden denetlendi.
Hata dizesi ve ConsumedCapacity değerleri, 2026-07-28 tarihinde @aws-sdk/client-dynamodb 3.1095.0 üzerinden DynamoDB Local 3.3.0'a karşı yakalandı ve motorun kendi çıktısıdır.