๐งจ ์ฌ๋ก 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์ด ์๋ ์ญ์ ๋ฅผ ๋ณด์ฅํ์ง ์์ ์ ์๊ณ ,
์ด๋๋ ์์ธ ๋ถ์๊ณผ ๋์ฒด ์ ๋ต์ด ๋ฐ๋์ ํ์ํฉ๋๋ค