DynamoDB Sorgu Oluşturucu
Query veya Scan isteğinin tamamını oluşturun — tablo, index, anahtar koşulu, filtre, projeksiyon, Limit, sıralama yönü, tutarlı okumalar ve sayfalama — ve çalıştırılabilir bir AWS SDK v3, CLI veya boto3 programını ya da PartiQL deyimini kopyalayın.
Erişim deseninden çalıştırılabilir isteğe
İfade nadiren işin tamamıdır. Üretimdeki bir Query ayrıca hangi index’in okunacağına, istek başına kaç item değerlendirileceğine, sort key’in hangi yönde ilerleyeceğine, okumanın güçlü tutarlı olması gerekip gerekmediğine ve yanıt bir LastEvaluatedKey ile döndüğünde ne olacağına da karar verir. İstek düzeyindeki bu parametreler ifade dizgisinin dışında yaşar — kopyala-yapıştır parçacıkların genellikle şaştığı yer de burasıdır.
Bu oluşturucu, isteği iş birimi olarak ele alır. Anahtar koşulunu, filtreyi ve projeksiyonu, İfade Oluşturucumuzun kullandığı aynı tipli ve ayrılmış-kelimelere-dayanıklı modelin üzerinde kurar, istek seçeneklerini de yanına ayarlarsınız. Çıktı bir parça değildir: çalıştırabileceğiniz bir programdır — import’lar, istemci kurulumu, çağrının kendisi ve “Tüm sayfaları getir”i açtığınızda tüm sonuç sayfalarını boşaltan ExclusiveStartKey döngüsü.
Üretilen kod her hedef için dürüst kalır. AWS CLI kendi kendine sayfalar; bu yüzden Limit --page-size olur ve tek istekli çalıştırma --no-paginate alır. PartiQL, deyime değil ExecuteStatement API’sine ait parametreleri geri çevirir. Azalan bir Query ise, ifade edilebildiği yerde sort key’iniz üzerinde ORDER BY olur.
Altı operasyondan herhangi biri için yalnızca ifadenin kendisine mi ihtiyacınız var — yer tutucu map’leriyle bir koşul, filtre veya güncelleme ifadesi? DynamoDB İfade Oluşturucu tam olarak bunun için yapıldı. Önce iki okuma operasyonu arasında mı karar veriyorsunuz? Query ve Scan hangisinin ne zaman doğru tercih olduğunu ayrıntılarıyla anlatır.
Sıkça sorulan sorular
Bunun DynamoDB İfade Oluşturucudan farkı ne?
İkisi problemi bilinçli olarak paylaşır. İfade Oluşturucunun konusu ifade sözdizimidir — altı operasyonun tamamında anahtar koşulları, filtreler, güncelleme ve koşul ifadeleri ile bunların ExpressionAttributeNames/Values map’leri — ve yalnızca komutun kendisini üretir. Sorgu Oluşturucunun konusu eksiksiz Query veya Scan isteğidir: tablo ve index, anahtar koşulu, filtre, projeksiyon, artı ifade aracının sunmadığı istek düzeyindeki parametreler (Limit, sıralama yönü, ConsistentRead, ExclusiveStartKey) — ve istemci kurulumu ile isteğe bağlı sayfalama döngüsünü içeren çalıştırılabilir bir program üretir.
Query veya Scan’de Limit gerçekte neyi sınırlar?
Limit, DynamoDB’nin istek başına kaç item değerlendireceğini sınırlar; kaç eşleşen item alacağınızı değil. Filtreler okumadan sonra çalışır; bu yüzden Limit 25 ve bir FilterExpression içeren bir Query, 25’ten az item — hatta hiç — döndürebilir ve yine de değerlendirdiği her şeyin okuma kapasitesini tüketir; sayfalama LastEvaluatedKey’den devam eder. Otomatik sayfalayan AWS CLI’da aynı parametre --page-size ile ayarlanır.
DynamoDB sayfalaması (LastEvaluatedKey) nasıl çalışır?
Daha fazla veri içeren bir Query veya Scan yanıtı, okunan son item’ın birincil anahtarı olan bir LastEvaluatedKey içerir. Bunu bir sonraki istekte ExclusiveStartKey olarak geri verir ve LastEvaluatedKey içermeyen bir yanıt gelene kadar tekrarlarsınız. “Tüm sayfaları getir” seçeneğini açın; üretilen SDK v3 ve boto3 programları tam olarak bu döngüyü içerir. AWS CLI, --no-paginate vermediğiniz sürece sayfaları kendisi takip eder.
Güçlü tutarlı okumayı ne zaman kullanabilirim?
ConsistentRead temel tablolarda ve local secondary index’lerde çalışır, ancak global secondary index’lerde çalışmaz — ConsistentRead ayarlı bir GSI’ye yapılan Query reddedilir. Güçlü tutarlı bir okuma ayrıca nihai tutarlı bir okumanın iki katı okuma kapasitesi tüketir. Bu, PartiQL deyim metninin bir parçası değil bir API parametresidir — PartiQL sekmesinin bunu dürüstçe geri çevirmesinin nedeni de bu.
Buraya girdiğim herhangi bir şey bir yere yükleniyor mu?
Hayır. Bu statik bir sayfa: istek tamamen tarayıcınızda oluşturulur ve kod orada üretilir; tablo adları, anahtar değerleri ve filtreler asla bir sunucuya ulaşmaz. “Bağlantıyı kopyala” tüm isteği URL’ye paketler — yazdığınız herhangi bir şeyin sayfadan çıkmasının tek yolu o bağlantıyı paylaşmaktır ve bu sizin elinizdedir.