Ücretsiz araç

DynamoDB İfade Oluşturucu

Bir işlem seç, isteği görsel olarak oluştur ve doğru, ayrılmış kelimelere karşı güvenli bir ifadeyi — ExpressionAttributeNames ve Values ile birlikte — AWS SDK v3, CLI, boto3, PartiQL, Java, Go veya .NET olarak kopyala.

İsteğini oluştur
Oluşturulan kod
new QueryCommand({
  "TableName": "MyTable",
  "KeyConditionExpression": "#hashKey = :hashKeyValue AND begins_with(#rangeKey, :rangeKeyValue)",
  "ExpressionAttributeNames": {
    "#hashKey": "pk",
    "#rangeKey": "sk"
  },
  "ExpressionAttributeValues": {
    ":hashKeyValue": {
      "S": "USER#123"
    },
    ":rangeKeyValue": {
      "S": "ORDER#"
    }
  }
})

DynamoDB ifadelerini elle yazmak neden hataya açıktır

Bir DynamoDB isteği nadiren bariz kısımda başarısız olur. status ayrılmış bir sözcük olduğu ve bir #-takma ada ihtiyaç duyduğu için, sayısal bir id string olarak gönderildiği ve hiçbir şeyle eşleşmediği için ya da bir FilterExpression ile bir ConditionExpression aynı :v0 yer tutucusunu tekrar kullandığı için başarısız olur. Her biri, çalışan ama yanlış satırları döndüren bir istek üreten küçük bir hatadır — hata ayıklanması en zor tür.

Bu oluşturucu, isteğin tamamını türlü bir modelden kurar. Her attribute adı takma adlandırılır, her değer açık bir DynamoDB türü taşır ve anahtar, filtre, koşul ve güncelleme yer tutucuları ayrı ad alanlarında bulunur, böylece çakışmalar yapısı gereği imkânsızdır. Çıktı tür etiketlerinden oluşturulur, metninden tahmin edilmez — bir sayı sayı olarak, base64 bir string ise binary olarak kalır.

Güncelleme ifadeleri ve koşullu yazma işlemleri de aynı şekilde ele alınır: atomik sayaçlar, if_not_exists, list_append, bir list dizini üzerinde REMOVE, set'ler üzerinde ADD/DELETE ve iyimser kilitleme koşullarının tümü tek bir doğru UpdateExpression ve ConditionExpression içinde birleşir. PartiQL sekmesi dürüsttür — bir ilkelin PartiQL biçimi olmadığında, sessizce yanlış davranan bir ifade üretmek yerine hangisi olduğunu söyler.

Yalnızca ifadelerini değil, Query veya Scan isteğinin tamamını mı oluşturuyorsun — index seçimi, Limit, sıralama yönü, tutarlı okumalar ve bir sayfalama döngüsü? DynamoDB Sorgu Oluşturucu, çalıştırılabilir programın tamamını üretir.

Önce bir Query ile bir Scan arasında mı seçim yapıyorsun? Query ve Scan farkı açıklar ve PartiQL örnekleri SQL benzeri sözdizimini derinlemesine ele alır.

Sıkça sorulan sorular

ExpressionAttributeName nedir ve neden # ve : önekleri var?

DynamoDB ifadeleri, ayrılmış bir sözcük olan (name, status veya size gibi) bir attribute adına doğrudan başvuramaz ve bir değer yer tutucusu, gerçek veriyi ifade dizesinin dışında tutar. Bu yüzden her attribute adı ExpressionAttributeNames içinde bir #-yer tutucusuyla, her değer de ExpressionAttributeValues içinde bir :-yer tutucusuyla takma adlandırılır. Bu oluşturucu bu haritaları senin için üretir, böylece ayrılmış bir sözcük isteğini asla bozmaz.

Neden her değer için bir tür (S, N, B…) seçmek zorundayım?

DynamoDB, attribute düzeyinde türlendirilmiştir: 5 sayısı { "N": "5" } ve "5" string'i { "S": "5" }'tir — farklı item'larla eşleşen farklı değerler. Bir metin girişi bunları ayırt edemez, bu yüzden oluşturucu her değeri etiketlemeni ister. Üretilen SDK, CLI, boto3, PartiQL, Java, Go ve .NET çıktısı, metinden tahmin edilmeden bu etiketten oluşturulur; böylece sayısal bir id sayı olarak kalır ve bir base64 blob binary olarak kalır.

Güncelleme ifadeleri ve koşullu yazma işlemleri oluşturabilir mi?

Evet. Güncelleme; SET (if_not_exists, atomik +/- sayaçları ve list_append dahil), REMOVE (#a[2] gibi bir list dizini dahil), ADD (number veya set) ve DELETE (set üyeleri) işlemlerini kapsar — hepsi tek bir UpdateExpression içinde birleştirilir. Koşullu yazma işlemleri, iyimser kilitleme için Update, Put veya Delete'e bir ConditionExpression ekler (attribute_not_exists, bir sürüm kontrolü vb.). Anahtar koşulları ve değer koşulları ayrı yer tutucu ad alanları kullanır, böylece asla çakışmazlar.

PartiQL neden bazen “ifade edilemez”?

PartiQL, okumaların ve yazmaların çoğunu kapsar, ancak birkaç DynamoDB ilkelinin PartiQL biçimi yoktur: koşullu bir INSERT, set türündeki ADD/DELETE güncelleme eylemleri ve size(), list_append ve if_not_exists gibi işlevler. İsteğin bunlardan birini kullandığında, PartiQL sekmesi sessizce yanlış şeyi yapacak bir ifade üretmek yerine tam olarak hangi özelliğin ifade edilemediğini söyler — bunlar için SDK, CLI, boto3, Java, Go veya .NET çıktısını kullan.

Verilerim tarayıcıdan ayrılıyor mu?

Hayır. Oluşturucu tamamen istemci tarafında çalışır — ifadeleri ve kod parçacıklarını tarayıcında üretir ve yazdığın hiçbir şey bir sunucuya gönderilmez. URL'nin “Bağlantıyı kopyala” özelliği isteğini bağlantının kendisine serileştirir, böylece paylaşabilir veya yer imine ekleyebilirsin, ancak bu senin elinde kalır.

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.