Apakah DynamoDB mendukung TTL?

Ya. DynamoDB mendukung Time to Live (TTL). Anda menunjuk sebuah atribut Number yang memuat timestamp kedaluwarsa Unix epoch dalam detik; DynamoDB lalu menghapus item kedaluwarsa di latar belakang — biasanya dalam beberapa hari setelah kedaluwarsa — tanpa biaya tambahan dan tanpa memakan kapasitas tulis. Item yang sudah kedaluwarsa tapi belum terhapus masih bisa muncul dalam pembacaan sampai ia benar-benar dihapus.

Cara mengaktifkannya

Nyalakan TTL untuk tabelnya dan sebutkan atribut yang memuat waktu kedaluwarsanya. Atribut itu harus bertipe Number yang menyimpan timestamp Unix epoch dalam detik (bukan milidetik). Item yang nilainya sudah lewat menjadi memenuhi syarat untuk dihapus.

Apa yang diharapkan

  • Gratis — penghapusan otomatis itu tidak memakan unit kapasitas tulis. Melakukan pembersihan yang sama sendiri berbiaya satu write unit per item: sepuluh juta item kedaluwarsa berukuran 1 KB berarti sepuluh juta write unit, $6.25 dengan on-demand di us-east-1, plus sekitar $1.64 untuk setiap scan penuh atas tabel 100 GB untuk menemukannya. (Satu pengecualian: pada global table, penghapusan yang direplikasi ke setiap Region lain memang memakan kapasitas tulis replikasi di sana.)
  • Tidak instan — DynamoDB biasanya menghapus item kedaluwarsa dalam beberapa hari setelah kedaluwarsa.
  • Masih terbaca — sampai benar-benar dihapus secara fisik, item kedaluwarsa bisa muncul dalam pembacaan, query, dan scan, jadi filter keluar kalau ketepatan itu penting.

Cara ia diam-diam tak pernah menyala

DynamoDB tidak memvalidasi atribut yang Anda tunjuk untuk TTL. Kedua penulisan berikut mengembalikan HTTP 200 pada tabel dengan TTL diaktifkan pada expiresAt, dan tak satu pun item-nya akan pernah kedaluwarsa:

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

Yang pertama menyimpan timestamp-nya sebagai String. AWS menyatakan dengan jelas bahwa "items with a TTL attribute that is not a Number type are ignored by the TTL process", dan tak ada yang memberi tahu Anda saat menulis, saat mengaktifkan, atau sesudahnya.

Yang kedua adalah yang benar-benar sering terjadi, karena tipenya sudah benar dan nilainya berasal dari Date.now(). 1790812800000 adalah 1 Oktober 2026 dalam milidetik. Dibaca sebagai detik, satu-satunya cara TTL membacanya, timestamp itu mendarat di tahun 58718. Item-nya berbentuk baik, bisa di-query, ditagih untuk penyimpanan, dan dijadwalkan kedaluwarsa lima puluh enam ribu tahun lagi.

Tak ada apa pun di API yang memunculkan salah satu dari kedua kesalahan itu, jadi pemeriksaannya harus terjadi sebelum Anda menulis. Konverter TTL kami memperlakukan nilai apa pun di atas 1e12 sebagai milidetik justru karena alasan ini, dan menunjukkan tanggal yang dihasilkan nilai itu.

Penggunaan umum

Catatan sesi, token verifikasi, dan hasil ter-cache yang seharusnya membersihkan diri sendiri — kasus penggunaan TTL klasik. Padukan dengan DynamoDB Streams untuk bereaksi terhadap penghapusan.

Pelajari lebih lanjut

Baca panduan DynamoDB TTL dan DynamoDB Streams. Unduh DynoTable untuk melihat dan menyetel atribut TTL.

Referensi

Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas; TTL.html diperiksa ulang 2026-07-28.

Kedua penulisan di atas dijalankan 2026-07-28 terhadap DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0 dan diterima dengan HTTP 200. Biaya pembersihannya dihitung dari tarif on-demand us-east-1 di tabel harga AWS kami yang tersinkronisasi.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.