Başlangıç4 dakikalık okuma

DynamoDB Item Tabanlı Eylemler: GetItem, PutItem, UpdateItem, DeleteItem

DynamoDB'nin API'si üç aileye ayrılır: bir item üzerinde birincil anahtarıyla çalışan item tabanlı eylemler, tek bir partition içinde bir aralığı okuyan Query ve her şeyi okuyan Scan. Bu kılavuz ilk aile — en sık kullandığınız dört işlem: GetItem, PutItem, UpdateItem, DeleteItem. Bunlar DynamoDB'nin sunduğu en ucuz, en hızlı çağrılardır ve aralarındaki ayrımları doğru anlamak (özellikle Put vs Update) bir sınıf kazara veri kaybı hatasını önler.

DynamoDB'nin item tabanlı işlemleri nelerdir?

DynamoDB'nin item tabanlı işlemleri, tek bir item'a tam birincil anahtarıyla erişen dört çağrıdır: GetItem onu okur, PutItem onu oluşturur veya tamamen değiştirir, UpdateItem belirli attribute'ları yerinde değiştirir ve DeleteItem onu kaldırır. Her biri tam olarak bir item'ı hedefler ve bu da onları en hızlı, en ucuz çağrılar yapar — çok sayıda item okuyan Query ve Scan'in aksine.

  • GetItem — bir item'ı tam birincil anahtarıyla okur.
  • PutItem — bir item'ı oluşturur veya tamamen değiştirir.
  • UpdateItem — bir item'ı oluşturur veya yerinde belirli attribute'larını değiştirir.
  • DeleteItem — bir item'ı tam birincil anahtarıyla siler.
  • Dördü de tam birincil anahtarı gerektirir (partition key, tablo varsa sort key dahil) — tam olarak bir item'a erişirler.
  • PutItem item'ın tamamını üzerine yazar; UpdateItem cerrahidir — bunları karıştırmak attribute'ların sessizce kaybolma şeklidir.

Belirleyici özellik: tek item, tam anahtar

Her item tabanlı eylem tam birincil anahtarıyla tek bir item'ı hedefler. Bunları hızlı ve ucuz yapan da budur — DynamoDB partition key'i hash'ler, doğrudan item'a gider, biter. Filtreleme yok, tarama yok. Tam anahtarı bilmiyorsanız, bunlar doğru araç değildir; Query ve Scan bunun içindir.

Diyelim ki USER#<id> ile anahtarlanmış kullanıcı hesapları çalıştırıyorsunuz:

PK: USER#204   email, displayName, plan, createdAt
  • USER#204 üzerinde GetItem → doğrudan o kullanıcı.
  • USER#204 üzerinde DeleteItem → o kullanıcıyı kaldırır.

İkisi de kesin anahtarı gerektirir. Anahtar yoksa, item tabanlı eylem yok.

PutItem vs UpdateItem — sizi ısıran ayrım

İçselleştirmeye değer ayrım budur:

  • PutItem item'ın tamamını yazar. USER#204 zaten varsa ve yalnızca {email, displayName} ile PutItem yaparsanız, mevcut plan ve createdAt attribute'ları gider — bir put item'ın tamamını değiştirir, birleştirmez.
  • UpdateItem yalnızca adını verdiğiniz şeyi değiştirir. Bir SET email = … içeren UpdateItem diğer her attribute'a dokunmaz ve item yoksa onu oluşturur (bir upsert).
Tüm item'ı değiştirBazı attribute'ları değiştir, gerisinikoruMevcut bir item'ı değiştir?PutItemUpdateItem

Pratik kural: mevcut bir item'ı değiştirmek için UpdateItem'a başvurun ve PutItem'ı yalnızca gerçekten "bu item'ı tam yeni durum olarak yaz" anlamına geldiğinde kullanın. Hem PutItem hem de UpdateItem bir koşul ifadesi kabul eder, böylece yazma işlemini koşullu yapabilirsiniz ("yalnızca zaten yoksa").

DynoTable'da item tabanlı eylemler

Bu aksiyonların arkasındaki ham API çağrılarını görmek ister misiniz? Altta yatan ifadeleri ve türlü değer haritalarını DynamoDB expression builder'da birleştirin ve düz JSON bir item'ı API'nin türlü formatına DynamoDB JSON dönüştürücü ile dönüştürün.

DynoTable'da aynı çalışma görseldir: ızgarada bir item açıp okuyun (bir GetItem), attribute'ları düzenleyip işleyin (bir UpdateItem), bir satır ekleyin veya değiştirin (bir PutItem) ya da birini silin — aynı anda bir item.

DynoTable'ın Quick View'ında tek bir item'ı okuma; Edit Item ve Copy as JSON eylemleriyle.
DynoTable'ın Quick View'ında tek bir item'ı okuma; Edit Item ve Copy as JSON eylemleriyle.

Tuzaklar + sonraki adımlar

  • PutItem item'ın tamamını değiştirir — gerisini kaybetmeden birkaç alanı değiştirmek için UpdateItem kullanın.
  • Tam birincil anahtarı bilmeniz gerekir — anahtar yoksa item eylemi değil, Query/Scan.
  • Aynı anda çok item mı? Bunları tek tek döngüye sokmayın — batch işlemleri onları daha az gidiş dönüşe katlar.
  • Eski/yeni değeri geri mi istiyorsunuz? Bir ardıl GetItem yerine ReturnValues ayarlayın.
  • İlgili: query vs scan çok okuma tarafını kapsar.

API kodu yazmadan item'ları okumak, yazmak ve silmek mi istiyorsunuz? DynoTable'ı indirin ve tablolarınızla doğrudan çalışın.

Güncellendi