𧨠μ¬λ‘ 1. "TTL μΈλ±μ€λ₯Ό λ§λ€μλλ° λ°μ΄ν°κ° μ§μμ§μ§ μμμ"
π¬ λ¬Έμ μν©
db.logs.createIndex({ createdAt: 1 }, { expireAfterSeconds: 3600 })- μΈλ±μ€λ μ μμ μΌλ‘ μμ±λ¨
- μκ°μ΄ μ§λλ λ¬Έμκ° μμ λμ§ μμ
π΅️ μμΈ λΆμ
✅ createdAt νλκ° Date νμ
μ΄ μλ
MongoDB TTLμ νλκ° ISODate, new Date() νμμ΄ μλλ©΄ μλνμ§ μμ
✅ ν΄κ²° λ°©λ²
// μλͺ»λ μ
{ createdAt: "2025-06-29T10:00:00Z" } // λ¬Έμμ΄ ❌
// μ¬λ°λ₯Έ μ
{ createdAt: ISODate("2025-06-29T10:00:00Z") } // Date νμ
✅π§ TTL μΈλ±μ€λ λ¬Έμμ΄/μ«μ νλμμλ μ λ μλνμ§ μμ!
𧨠μ¬λ‘ 2. "μΌλΆ λ¬Έμλ§ TTL μμ κ° μ λ¨"
π¬ λ¬Έμ μν©
- 1μκ° TTL μΈλ±μ€λ₯Ό μ μ©νλλ°, μΌλΆ λ¬Έμλ§ λ¨μ μμ
π΅️ μμΈ λΆμ
✅ createdAt νλκ° μλ λ¬Έμ
TTLμ ν΄λΉ νλκ° μ‘΄μ¬νμ§ μμΌλ©΄ λμμμ μ μΈν¨
✅ ν΄κ²° λ°©λ²
- 컬λ μ λ΄ λͺ¨λ λ¬Έμμ TTL κΈ°μ€ νλ(createdAt)μ΄ λ°λμ μ‘΄μ¬νλλ‘ λ³΄μ₯
- λλ createdAtμ΄ nullμΌ κ²½μ°λ₯Ό κ°μ§νμ¬ μ¬μ μ²λ¦¬
𧨠μ¬λ‘ 3. "μμ νμ΄λ°μ΄ λ무 λ¦μ΄μ"
π¬ λ¬Έμ μν©
- expireAfterSeconds: 600 μ€μ νλλ°
- μμ κ° 15λΆ~20λΆ νμ λ°μ
π΅️ μμΈ λΆμ
✅ TTLμ μ€μκ°μ΄ μλλΌ, MongoDB λ΄λΆ λ°±κ·ΈλΌμ΄λ μ€μΌμ€λ¬μ μν΄ λμ
→ κΈ°λ³Έμ μΌλ‘ 60μ΄ κ°κ²©μΌλ‘ TTL μ€μΊ
→ μμ€ν
λΆν λλ locking μν©μ΄λ©΄ λλ μ΄ λ°μ
✅ ν΄κ²° λ°©λ²
- TTLμ μ νν μκ° λ³΄μ₯μ νμ§ μμ
- λ§μ½ μ νν μμ μκ°μ΄ νμνλ©΄ → cron-job λλ TTL + μννλ κ΄λ¦¬ μ‘°ν© μ¬μ©
π μμ½: TTL μΈλ±μ€κ° μλνμ§ μλ μ£Όμ μμΈ
| μμΈ | μ€λͺ | ν΄κ²°μ± |
| ❌ λ μ§ νλκ° Date νμ μ΄ μλ | λ¬Έμμ΄μ΄λ©΄ λ¬΄ν¨ | ISODate() μ¬μ© |
| ❌ TTL νλκ° μλ λ¬Έμ | TTL λμ μλ | λͺ¨λ λ¬Έμμ νλ ν¬ν¨ |
| ⏱️ μ€μΌμ€λ¬ μ§μ° | TTLμ μ νν μκ°μ΄ μλ | μ§μ° κ°μ λλ 보μ λ°©μ μ μ© |
π§ μ΄μ ν: TTL μ€μλ λ°©μ§ μ²΄ν¬λ¦¬μ€νΈ
✅ TTL λμ νλλ λ°λμ Date νμ
μΈμ§ νμΈ
✅ λ¬Έμ μμ± μ TTL κΈ°μ€ νλλ₯Ό 무쑰건 ν¬ν¨
✅ μ§μ° νμ©μ΄ κ°λ₯ν λ°μ΄ν°μλ§ TTL μ¬μ©
✅ TTL μΈλ±μ€ μΈμλ cron-jobμ΄λ soft delete λ°±μ
μ λ΅ λ³ν
π λ§λ¬΄λ¦¬
MongoDB TTL μΈλ±μ€λ κ°λ ₯νμ§λ§, μ μ½μ΄ λΆλͺ
ν κΈ°λ₯μ
λλ€.
μ€μ μ΄μμμλ TTLμ΄ μλ μμ λ₯Ό 보μ₯νμ§ μμ μ μκ³ ,
μ΄λλ μμΈ λΆμκ³Ό λ체 μ λ΅μ΄ λ°λμ νμν©λλ€