AWS CLI ile DynamoDB'de GSI Sorgulama
Bir global ikincil indeksi sorgulamak, normal bir aws dynamodb query artı bir bayraktır: --index-name. Anahtar koşulu bu durumda tablonun değil, indeksin anahtarlarını hedefler — burada AlbumTitle-index, temel tablonun (Artist + SongTitle) bir tarama olmadan hizmet edemeyeceği bir erişim deseni olan, şarkıları albüme göre getirmemizi sağlar.
Code
aws dynamodb query \
--table-name 'Music' \
--index-name 'AlbumTitle-index' \
--key-condition-expression '#hashKey = :hashKeyValue' \
--expression-attribute-names '{"#hashKey":"AlbumTitle"}' \
--expression-attribute-values '{":hashKeyValue":{"S":"Danzon"}}'Çıktı, eşleşen öğeleri DynamoDB JSON olarak verir:
{
"Items": [
{"Artist": {"S": "Arturo Sandoval"}, "SongTitle": {"S": "Cubano Chant"}, ...}
],
"Count": 2,
"ScannedCount": 2
}Açıklama
--index-name— sorgulanacak GSI'yı adlandırır (--table-nameyine de zorunludur).--key-condition-expression, bir tablo sorgusuyla aynı operatörlerle indeksin bölüm (ve isteğe bağlı sıralama) anahtarını — buradaAlbumTitle— kullanır.- Yalnızca nihai tutarlılık — GSI'lar temel tablodan eşzamansız olarak çoğaltılır. Bir GSI sorgusuna
--consistent-readeklemek onu yükseltmez; birValidationExceptionile başarısız olur. (Yerel ikincil indeksler güçlü tutarlılığı destekler.) - Yalnızca yansıtılan öznitelikleri alırsınız — bir GSI sorgusu, indeksin yansıttığını (
ALL,KEYS_ONLYveyaINCLUDEile listelenen öznitelikler) döndürür ve gerisini temel tablodan getiremez. - Bir GSI'da anahtarlar benzersiz değildir — birçok öğe aynı indeks anahtarını paylaşabilir ve indeks anahtarı özniteliği eksik olan öğeler basitçe görünmez (bu, seyrek-indeks desenidir).
- Sayfalama otomatiktir — CLI, hizmetin sayfalama belirteçlerini perde arkasında takip eder ve birleştirilmiş sonucu yazdırır. Çıktıyı sınırlamak için
--max-itemskullanın (birNextTokengörünür;--starting-tokenile devam edin) ya da tek bir hizmet çağrısı için--no-paginatekullanın.
Görsel olarak yapın
DynamoDB Expression Builder, indeks sorguları için anahtar koşulunu + ad/değer eşlemelerini oluşturur ve size çalıştırmaya hazır bir CLI komutu verir.
Bir tablonun indekslerini gezinmek ve bir formdan GSI sorguları çalıştırmak için — sayfalanmış ızgara, CLI olarak kopyalama — DynoTable'ı indirin.
İlgili örnekler
- Node.js'te DynamoDB'de GSI Sorgulama — AWS SDK v3 ile aynı indeks sorgusu.
- Python'da DynamoDB'de GSI Sorgulama — boto3 ile aynı indeks sorgusu.
- AWS CLI ile DynamoDB Query — temel tabloyu sorgulama.
- GSI ve LSI — erişim desenine hangi indeks türünün uyduğu.
- GSI'lar neden nihai tutarlıdır — çoğaltma gecikmesinin açıklaması.
- "The table does not have the specified index" — indeks adı eşleşmiyor (GSI adları büyük/küçük harf duyarlıdır).
- "Consistent reads are not supported on global secondary indexes" — tutarlı okuma bayrağının bir GSI'da neden başarısız olduğu.
References
- Query — Amazon DynamoDB API Reference
- query — AWS CLI Command Reference
- Using Global Secondary Indexes in DynamoDB — Amazon DynamoDB Developer Guide
- Using AWS CLI pagination options — AWS CLI User Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.