DynamoDB TTL destekliyor mu?

Evet. DynamoDB, Time to Live'ı (TTL) destekler. Unix epoch sona erme zaman damgasını saniye cinsinden tutan bir Number özniteliği belirlersiniz; DynamoDB de süresi dolan öğeleri arka planda — genellikle sona ermeden sonraki birkaç gün içinde — ek maliyet olmadan ve yazma kapasitesi tüketmeden kaldırır. Süresi dolmuş ama henüz silinmemiş öğeler, kaldırılana kadar okumalarda görünmeye devam edebilir.

Nasıl etkinleştirilir

Tablo için TTL'i açın ve sona erme zamanını tutan özniteliği adlandırın. O özniteliğin, Unix epoch zaman damgasını saniye cinsinden (milisaniye değil) depolayan bir Number olması gerekir. Değeri geçmişte olan öğeler silinmeye uygun hâle gelir.

Ne beklemelisiniz

  • Ücretsiz — otomatik silme yazma kapasite birimi tüketmez. Aynı temizliği kendiniz yapmak öğe başına bir yazma birimine mal olur: 1 KB'lık on milyon süresi dolmuş öğe, on milyon yazma birimi, us-east-1 talep üzerine fiyatlarıyla $6.25 ve onları bulmak için 100 GB'lık bir tablo üzerindeki her tam tarama için yaklaşık $1.64 daha demektir. (Bir istisna: bir global tabloda, diğer her Bölgeye çoğaltılan silme, orada çoğaltılmış yazma kapasitesi tüketir.)
  • Anlık değil — DynamoDB, süresi dolan öğeleri genellikle sona ermeden sonraki birkaç gün içinde kaldırır.
  • Hâlâ okunabilir — fiziksel olarak silinene kadar, süresi dolmuş öğeler okumalarda, sorgularda ve taramalarda görünebilir; kesinlik önemliyse onları filtreleyip ayıklayın.

Sessizce hiç çalışmama biçimi

DynamoDB, TTL'i yönelttiğiniz özniteliği doğrulamaz. expiresAt üzerinde TTL etkin bir tabloda, aşağıdaki yazmaların ikisi de HTTP 200 döndürdü ve iki öğe de asla sona ermeyecek:

{"pk": {"S": "sess#1"}, "expiresAt": {"S": "1790812800"}}
{"pk": {"S": "sess#2"}, "expiresAt": {"N": "1790812800000"}}

İlki zaman damgasını bir String olarak depolar. AWS açıkça belirtir: "items with a TTL attribute that is not a Number type are ignored by the TTL process" ve size bunu ne yazma zamanında, ne etkinleştirme zamanında, ne de sonrasında hiçbir şey söyler.

İkincisi gerçekte olanıdır, çünkü tür doğrudur ve değer Date.now()'dan gelmiştir. 1790812800000, milisaniye cinsinden 1 Ekim 2026'dır. TTL'in onu okuduğu tek biçim olan saniye olarak okunduğunda o zaman damgası 58718 yılına düşer. Öğe iyi biçimlendirilmiş, sorgulanabilir, depolama için faturalandırılan ve elli altı bin yıl sonra sona ermek üzere zamanlanmış durumdadır.

API'de bu hataların hiçbirini yüzeye çıkaran bir şey yoktur, dolayısıyla denetimin siz yazmadan önce olması gerekir. TTL dönüştürücümüz tam da bu nedenle 1e12'nin üzerindeki her değeri milisaniye kabul eder ve değerin çözümlendiği tarihi gösterir.

Yaygın kullanımlar

Kendini temizlemesi gereken oturum kayıtları, doğrulama token'ları ve önbelleklenmiş sonuçlar — klasik TTL kullanım durumları. Silmelere tepki vermek için DynamoDB Streams ile eşleştirin.

Daha derine inin

DynamoDB TTL kılavuzunu ve DynamoDB Streams kılavuzunu okuyun. TTL özniteliklerini görüntülemek ve ayarlamak için DynoTable'ı indirin.

Kaynaklar

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı; TTL.html 2026-07-28 tarihinde yeniden denetlendi.

Yukarıdaki iki yazma da 2026-07-28 tarihinde @aws-sdk/client-dynamodb 3.1095.0 üzerinden DynamoDB Local 3.3.0'a karşı çalıştırıldı ve HTTP 200 ile kabul edildi. Temizlik maliyetleri, senkronize edilmiş AWS fiyat tablomuzdaki us-east-1 talep üzerine oranlarından hesaplandı.

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.