2025๋…„ 12์›” 02์ผยท6๋ถ„ ์ฝ๊ธฐ

๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”์„ ์œ„ํ•œ PostgreSQL ํŒŒํ‹ฐ์…”๋‹

PostgreSQL ํŒŒํ‹ฐ์…”๋‹์„ ํ†ตํ•ด ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”์—์„œ ์–ธ์ œ ์ด๋“์ด ๋‚˜๋Š”์ง€, ํŒŒํ‹ฐ์…˜ ํ‚ค๋Š” ์–ด๋–ป๊ฒŒ ๊ณ ๋ฅด๋Š”์ง€, ๊ด€๋ฆฌ์ž ํŒจ๋„ ํ•„ํ„ฐ์™€ ๋ณด์กด(๋ฆฌํ…์…˜)์— ์–ด๋–ค ์˜ํ–ฅ์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์„ธ์š”.

๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”์„ ์œ„ํ•œ PostgreSQL ํŒŒํ‹ฐ์…”๋‹

์ด๋ฒคํŠธ์™€ ๊ฐ์‚ฌ ํ…Œ์ด๋ธ”์ด ๋ฌธ์ œ๋˜๋Š” ์ด์œ 

์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ์‚ฌ ํ…Œ์ด๋ธ”์€ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ๋ชฉ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”์€ ํŽ˜์ด์ง€ ์กฐํšŒ, ์ „์†ก๋œ ์ด๋ฉ”์ผ, ์›นํ›… ํ˜ธ์ถœ, ์ž‘์—… ์‹คํ–‰์ฒ˜๋Ÿผ ์ผ์–ด๋‚œ ์ผ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ…Œ์ด๋ธ”์€ ๋ˆ„๊ฐ€ ์–ธ์ œ ๋ฌด์—‡์„ ๋ฐ”๊ฟจ๋Š”์ง€ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค: ์ƒํƒœ ๋ณ€๊ฒฝ, ๊ถŒํ•œ ์—…๋ฐ์ดํŠธ, ์ง€๊ธ‰ ์Šน์ธ ๊ฐ™์€ ํ•ญ๋ชฉ์œผ๋กœ ์ข…์ข… ๋ณ€๊ฒฝ ์ „/ํ›„ ๋‚ด์šฉ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๋‘ ํ…Œ์ด๋ธ” ๋ชจ๋‘ ์ถ”๊ฐ€๋งŒ ์ผ์–ด๋‚˜๋Š”(append-only) ํŠน์„ฑ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ์ปค์ง‘๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ํ–‰์„ ์ž์ฃผ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ , ๋งค๋ถ„ ์ƒˆ ํ–‰์ด ๋“ค์–ด์˜ต๋‹ˆ๋‹ค. ๋ฐฐ๊ฒฝ ์ž‘์—…๊ณผ ํ†ตํ•ฉ์„ ํฌํ•จํ•˜๋ฉด ์ž‘์€ ์ œํ’ˆ๋„ ๋ช‡ ์ฃผ ๋งŒ์— ์ˆ˜๋ฐฑ๋งŒ ํ–‰์˜ ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์ผ์ƒ ์—…๋ฌด์—์„œ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ํŒจ๋„์€ ๋ณดํ†ต "์–ด์ œ์˜ ์˜ค๋ฅ˜"๋‚˜ "์ด ์‚ฌ์šฉ์ž์˜ ํ™œ๋™" ๊ฐ™์€ ๋น ๋ฅธ ํ•„ํ„ฐ๋ฅผ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์ด ์ปค์งˆ์ˆ˜๋ก ๊ทธ๋Ÿฐ ๊ธฐ๋ณธ ํ™”๋ฉด๋“ค์ด ๋А๋ ค์ง€๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธฐ์— ๋ณดํ†ต ๋ช‡ ๊ฐ€์ง€ ์ฆ์ƒ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค:

  • ์ข์€ ๋‚ ์งœ ๋ฒ”์œ„์ž„์—๋„ ํ•„ํ„ฐ๊ฐ€ ๋ช‡ ์ดˆ ๊ฑธ๋ฆฌ๊ฑฐ๋‚˜(๋˜๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ) ์‹คํŒจํ•œ๋‹ค.
  • ์ธ๋ฑ์Šค๊ฐ€ ๋„ˆ๋ฌด ์ปค์ ธ ์‚ฝ์ž…์ด ๋А๋ ค์ง€๊ณ  ์ €์žฅ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•œ๋‹ค.
  • VACUUM ๋ฐ autovacuum์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ๋œ๋‹ค.
  • ๋ณด์กด(๋ฐ์ดํ„ฐ ์‚ญ์ œ)์ด ์œ„ํ—˜ํ•ด์ง„๋‹ค: ์˜ค๋ž˜๋œ ํ–‰ ์‚ญ์ œ๊ฐ€ ๋А๋ฆฌ๊ณ  ๋ธ”๋กœํŠธ๊ฐ€ ์ƒ๊ธด๋‹ค.

ํŒŒํ‹ฐ์…”๋‹์€ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ๋Š” ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด, ํ•˜๋‚˜์˜ ํฐ ํ…Œ์ด๋ธ”์„ ์—ฌ๋Ÿฌ ์ž‘์€ ํ…Œ์ด๋ธ”(ํŒŒํ‹ฐ์…˜)๋กœ ๋‚˜๋ˆ„๊ณ  ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ณต์œ ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. PostgreSQL์€ ๋ณดํ†ต ์‹œ๊ฐ„์— ๊ธฐ๋ฐ˜ํ•œ ๊ทœ์น™์œผ๋กœ ์ƒˆ ํ–‰์„ ์ ์ ˆํ•œ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํŒ€๋“ค์€ ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”์— PostgreSQL ํŒŒํ‹ฐ์…”๋‹์„ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค: ์ตœ๊ทผ ๋ฐ์ดํ„ฐ๋Š” ์ž‘๊ฒŒ ์œ ์ง€๋˜์–ด, ์ฟผ๋ฆฌ๊ฐ€ ํŠน์ • ์‹œ๊ฐ„ ์ฐฝ๋งŒ ํ•„์š”ํ•  ๋•Œ PostgreSQL์ด ์ „์ฒด ํŒŒํ‹ฐ์…˜์„ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํŒŒํ‹ฐ์…”๋‹์ด ๋งŒ๋Šฅ์€ ์•„๋‹™๋‹ˆ๋‹ค. "์ตœ๊ทผ ์ผ์ฃผ์ผ" ๊ฐ™์€ ์ฟผ๋ฆฌ์— ํฐ ๋„์›€์ด ๋˜๊ณ  ๋ณด์กด์„ ๋‹จ์ˆœํ™”(์˜ค๋ž˜๋œ ํŒŒํ‹ฐ์…˜ ๋“œ๋กญ)ํ•˜์ง€๋งŒ, ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฟผ๋ฆฌ๋Š” ๋งŽ์€ ํŒŒํ‹ฐ์…˜์„ ํ™•์ธํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ๊ด€๋ฆฌํ•ด์•ผ ํ•  ๊ฐ์ฒด๊ฐ€ ๋งŽ์•„์ง€๊ณ  ์ž˜๋ชป ๊ตฌ์„ฑ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง„๋‹ค.
  • ์ผ๋ถ€ ๊ณ ์œ  ์ œ์•ฝ๊ณผ ์ธ๋ฑ์Šค๋Š” ์ „์ฒด ๋ฐ์ดํ„ฐ์— ๊ฑธ์ณ ์ ์šฉํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค.

๊ด€๋ฆฌ์ž ํŒจ๋„์ด ๋‚ ์งœ ํ•„ํ„ฐ์™€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ณด์กด ๊ทœ์น™์— ํฌ๊ฒŒ ์˜์กดํ•œ๋‹ค๋ฉด, ํŒŒํ‹ฐ์…”๋‹์€ ์‹ค์งˆ์ ์ธ ์ด๋“์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๋Œ€๋ถ€๋ถ„์˜ ์ฟผ๋ฆฌ๊ฐ€ "์‚ฌ์šฉ์ž X์˜ ์ „์ฒด ํ™œ๋™"์ด๋ผ๋ฉด, UI์™€ ์ธ๋ฑ์Šค๋ฅผ ์‹ ์ค‘ํžˆ ์„ค๊ณ„ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜คํžˆ๋ ค ๊ณจ์น˜๊ฑฐ๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ์™€ ๊ฐ์‚ฌ์˜ ์ „ํ˜•์ ์ธ ์ ‘๊ทผ ํŒจํ„ด

์ด๋ฒคํŠธ์™€ ๊ฐ์‚ฌ ํ…Œ์ด๋ธ”์€ ์ผ๋ฐฉํ–ฅ์œผ๋กœ ์„ฑ์žฅํ•ฉ๋‹ˆ๋‹ค: ์œ„๋กœ ๊ณ„์† ์Œ“์ž…๋‹ˆ๋‹ค. ์ง€์†์ ์ธ ์‚ฝ์ž…์ด ์žˆ๊ณ  ๊ฑฐ์˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ–‰์€ ํ•œ ๋ฒˆ ์“ฐ์ด๊ณ  ๋‚˜์ค‘์— ์ง€์›, ์‚ฌ๊ณ  ์กฐ์‚ฌ ๋˜๋Š” ๊ทœ์ • ์ค€์ˆ˜ ํ™•์ธ ์‹œ์— ์ฝํž™๋‹ˆ๋‹ค.

์ด "append-only" ํ˜•ํƒœ๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฝ์ž… ์„ฑ๋Šฅ์€ ํ•˜๋ฃจ ์ข…์ผ ๊ด€์‹ฌ์‚ฌ์ด๊ณ , ์ฝ๊ธฐ ์„ฑ๋Šฅ์€ ์ง€์›์ด๋‚˜ ์šด์˜์ด ๋น ๋ฅธ ๋‹ต์„ ํ•„์š”๋กœ ํ•  ๋•Œ ์ง‘์ค‘์ ์œผ๋กœ ์ค‘์š”ํ•ด์ง‘๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์ฝ๊ธฐ๋Š” ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ํŒจ๋„์—์„œ๋Š” ๋ณดํ†ต ์‚ฌ์šฉ์ž๊ฐ€ ๋„“๊ฒŒ ์‹œ์ž‘(์ตœ๊ทผ 24์‹œ๊ฐ„)ํ•œ ๋’ค ์‚ฌ์šฉ์ž, ์—”ํ‹ฐํ‹ฐ, ์•ก์…˜์œผ๋กœ ์ขํ˜€๊ฐ‘๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ํ•„ํ„ฐ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:

  • ์‹œ๊ฐ„ ๋ฒ”์œ„
  • ํ–‰์œ„์ž(์‚ฌ์šฉ์ž ID, ์„œ๋น„์Šค ๊ณ„์ •, IP ์ฃผ์†Œ)
  • ๋Œ€์ƒ(์—”ํ‹ฐํ‹ฐ ํƒ€์ž… + ์—”ํ‹ฐํ‹ฐ ID, ์˜ˆ: ์ฃผ๋ฌธ #1234)
  • ์•ก์…˜ ํƒ€์ž…(์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ, ๋กœ๊ทธ์ธ ์‹คํŒจ)
  • ์ƒํƒœ๋‚˜ ์‹ฌ๊ฐ๋„(์„ฑ๊ณต/์˜ค๋ฅ˜)

์‹œ๊ฐ„ ๋ฒ”์œ„๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด "์ฒซ ๋ฒˆ์งธ ์ž๋ฅด๊ธฐ"์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…”๋‹์˜ ํ•ต์‹ฌ ํ†ต์ฐฐ์ž…๋‹ˆ๋‹ค: ๋งŽ์€ ์ฟผ๋ฆฌ๋Š” ์‹œ๊ฐ„ ์กฐ๊ฐ์„ ์›ํ•˜๊ณ , ๊ทธ ์•ˆ์—์„œ ๋‹ค๋ฅธ ํ•„ํ„ฐ๋“ค์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ณด์กด๋„ ๋˜ ๋‹ค๋ฅธ ์ƒ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ๋Š” ๊ฑฐ์˜ ์˜๊ตฌ์ ์œผ๋กœ ๋ณด๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒ€์€ ๋ณดํ†ต ๊ณ ์„ธ๋ถ€ ์ด๋ฒคํŠธ๋ฅผ 30์ผ ๋˜๋Š” 90์ผ ๋ณด๊ด€ํ•œ ๋’ค ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์•„์นด์ด๋ธŒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ๋กœ๊ทธ๋Š” ๋” ๊ธด ์š”๊ตฌ์‚ฌํ•ญ(365์ผ ์ด์ƒ)์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ธ”๋กœํ‚นํ•˜์ง€ ์•Š๊ณ  ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ๋กœ๊น…์€ ์ถ”๊ฐ€ ๊ธฐ๋Œ€์‚ฌํ•ญ์„ ๋™๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ก์€ ๋ณดํ†ต ๋ถˆ๋ณ€(immutable)์„ ์›ํ•˜๊ณ , ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ถ”์  ๊ฐ€๋Šฅ(๋ˆ„๊ฐ€/๋ฌด์—‡์„/์–ธ์ œ ๋ฐ ์š”์ฒญ/์„ธ์…˜ ์ปจํ…์ŠคํŠธ ํฌํ•จ)ํ•ด์•ผ ํ•˜๋ฉฐ, ์ ‘๊ทผ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋ณด์•ˆ ๊ด€๋ จ ์ด๋ฒคํŠธ๋ฅผ ๋ณด์ง€ ๋ชปํ•˜๊ฒŒ).

์ด ํŒจํ„ด๋“ค์€ UI ์„ค๊ณ„์— ์ง์ ‘ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธฐ๋Œ€ํ•˜๋Š” ํ•„ํ„ฐโ€”๋‚ ์งœ ์„ ํƒ๊ธฐ, ์‚ฌ์šฉ์ž ์„ ํƒ๊ธฐ, ์—”ํ‹ฐํ‹ฐ ๊ฒ€์ƒ‰, ์•ก์…˜ ๋“œ๋กญ๋‹ค์šดโ€”๊ฐ€ ๋ฐ”๋กœ ํ…Œ์ด๋ธ”๊ณผ ์ธ๋ฑ์Šค๊ฐ€ ์ง€์›ํ•ด์•ผ ํ•  ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ ๋ณผ๋ฅจ์ด ์ฆ๊ฐ€ํ•ด๋„ ๊ด€๋ฆฌ์ž ๊ฒฝํ—˜์ด ๋น ๋ฅด๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

ํŒŒํ‹ฐ์…”๋‹์ด ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•

ํŒŒํ‹ฐ์…”๋‹์ด ๊ฐ์‚ฌ ๋กœ๊ทธ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ ๊ถŒ์žฅ ์‚ฌํ•ญ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ผ์ƒ์ ์ธ ์ฟผ๋ฆฌ์™€ ๋ฃจํ‹ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์„œ๋กœ ์ถฉ๋Œํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋งŒํผ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ด ์ปค์กŒ์„ ๋•Œ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์‚ฌ์ด์ฆˆ ๊ธฐ์ค€: ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”์ด ์ˆ˜์ฒœ๋งŒ ํ–‰์— ๋„๋‹ฌํ•˜๋ฉด ์ธก์ •ํ•ด๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”๊ณผ ์ธ๋ฑ์Šค๊ฐ€ ์ˆ˜์‹ญ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ๋กœ ์ปค์ง€๋ฉด, ๋‹จ์ˆœํ•œ ๋‚ ์งœ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์กฐ์ฐจ ๋А๋ ค์ง€๊ฑฐ๋‚˜ ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””์Šคํฌ์—์„œ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋ฅผ ์ฝ๊ณ  ์ธ๋ฑ์Šค ์œ ์ง€๋น„์šฉ์ด ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋ช…ํ™•ํ•œ ์ฟผ๋ฆฌ ์‹ ํ˜ธ๋Š” ์ž์ฃผ ์ž‘์€ ์‹œ๊ฐ„ ์กฐ๊ฐ(์ง€๋‚œ ํ•˜๋ฃจ, ์ง€๋‚œ ์ฃผ)์„ ์š”์ฒญํ•˜๋ฉด์„œ๋„ PostgreSQL์ด ์—ฌ์ „ํžˆ ํ…Œ์ด๋ธ”์˜ ๋งŽ์€ ๋ถ€๋ถ„์„ ๊ฑด๋“œ๋ฆด ๋•Œ์ž…๋‹ˆ๋‹ค. "์ตœ๊ทผ ํ™œ๋™" ํ™”๋ฉด์ด ๋А๋ฆฌ๊ฑฐ๋‚˜ ๋‚ ์งœ+์‚ฌ์šฉ์ž, ์•ก์…˜ ํƒ€์ž…, ์—”ํ‹ฐํ‹ฐ ID๋กœ ํ•„ํ„ฐํ•œ ๊ฐ์‚ฌ๊ฐ€ ๋А๋ฆด ๋•Œ์ž…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๊ณ„ํš์—์„œ ํฐ ์Šค์บ”์ด ๋ณด์ด๊ฑฐ๋‚˜ ๋ฒ„ํผ ์ฝ๊ธฐ๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋†’๋‹ค๋ฉด ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์œ ์ง€๋ณด์ˆ˜ ์‹ ํ˜ธ๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค:

  • VACUUM๊ณผ autovacuum์ด ์˜ˆ์ „๋ณด๋‹ค ํ›จ์”ฌ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
  • Autovacuum์ด ๋’ค์ฒ˜์ง€๊ณ  ์ฃฝ์€ ํŠœํ”Œ(๋ธ”๋กœํŠธ)์ด ์Œ“์ธ๋‹ค.
  • ํŠนํžˆ ๋‹ค์ค‘ ์ปฌ๋Ÿผ ์ธ๋ฑ์Šค๊ฐ€ ์˜ˆ์ƒ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ปค์ง„๋‹ค.
  • ์œ ์ง€๋ณด์ˆ˜์™€ ํŠธ๋ž˜ํ”ฝ์ด ๊ฒน์น  ๋•Œ ์ž ๊ธˆ ๊ฒฝํ•ฉ์ด ๋ˆˆ์— ๋„๊ฒŒ ๋œ๋‹ค.

์šด์˜ ๋น„์šฉ์€ ํŒ€์„ ํŒŒํ‹ฐ์…”๋‹์œผ๋กœ ๋ฐ€์–ด๋„ฃ๋Š” ๋А๋ฆฐ ํ๋ฆ„์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—…๊ณผ ๋ณต์›์ด ๋А๋ ค์ง€๊ณ  ์ €์žฅ๊ณต๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๋ฉฐ, ํฐ DELETE๊ฐ€ ๋ธ”๋กœํŠธ์™€ ์ถ”๊ฐ€ vacuum ์ž‘์—…์„ ๋งŒ๋“ค์–ด ๋ณด์กด ์ž‘์—…์ด ๋น„์‹ธ์ง‘๋‹ˆ๋‹ค.

์ฃผ๋œ ๋ชฉํ‘œ๊ฐ€ ๋ช…ํ™•ํ•œ ๋ณด์กด ์ •์ฑ…๊ณผ "์ตœ๊ทผ ๊ธฐ๊ฐ„" ์ฟผ๋ฆฌ์˜ ๊ฐ€์†์ด๋ผ๋ฉด ํŒŒํ‹ฐ์…”๋‹์€ ์ง„์ง€ํ•˜๊ฒŒ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ํ…Œ์ด๋ธ” ๊ทœ๋ชจ๊ฐ€ ์ ๋‹นํ•˜๊ณ  ์ธ๋ฑ์Šค๊ฐ€ ์ž˜ ๋˜์–ด ์žˆ์–ด ์ฟผ๋ฆฌ๊ฐ€ ์ด๋ฏธ ๋น ๋ฅด๋‹ค๋ฉด, ํŒŒํ‹ฐ์…”๋‹์€ ๋ช…ํ™•ํ•œ ์ด๋“ ์—†์ด ๋ณต์žก์„ฑ๋งŒ ๋”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๋ฐ ๊ฐ์‚ฌ ํ…Œ์ด๋ธ”์— ์ ํ•ฉํ•œ ํŒŒํ‹ฐ์…”๋‹ ์˜ต์…˜

๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์‚ฌ ๋ฐ ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ์—๋Š” ์‹œ๊ฐ„์— ์˜ํ•œ ๋ฒ”์œ„ ํŒŒํ‹ฐ์…”๋‹(range by time)์ด ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ณ  ์ ํ•ฉํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ๋Š” ์‹œ๊ฐ„ ์ˆœ์„œ๋กœ ๋“ค์–ด์˜ค๊ณ , ์ฟผ๋ฆฌ๋Š” ์ข…์ข… "์ตœ๊ทผ 24์‹œ๊ฐ„" ๋˜๋Š” "์ตœ๊ทผ 30์ผ" ๊ฐ™์€ ์‹œ๊ฐ„ ์ฐฝ์— ์ดˆ์ ์„ ๋งž์ถ”๋ฉฐ, ๋ณด์กด๋„ ๋ณดํ†ต ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ํŒŒํ‹ฐ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋“œ๋กญํ•˜๋Š” ๊ฒƒ์ด ํฐ DELETE๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋ฒ”์œ„ ํŒŒํ‹ฐ์…”๋‹์€ ์ธ๋ฑ์Šค๋„ ๋” ์ž‘๊ณ  ์ง‘์ค‘๋˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํŒŒํ‹ฐ์…˜์€ ์ž์ฒด ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์ง€๋‚œ์ฃผ๋ฅผ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ๋Š” ์ˆ˜๋…„์น˜๋ฅผ ์•„์šฐ๋ฅด๋Š” ๊ฑฐ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ํ›‘์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํŒŒํ‹ฐ์…”๋‹ ๋ฐฉ์‹๋„ ์žˆ์ง€๋งŒ, ๋กœ๊ทธ ๋ฐ ๊ฐ์‚ฌ ์‚ฌ๋ก€์—๋Š” ๋œ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค:

  • ๋ฆฌ์ŠคํŠธ(List, ์˜ˆ: ํ…Œ๋„ŒํŠธ๋ณ„)๋Š” ์†Œ์ˆ˜์˜ ๋งค์šฐ ํฐ ํ…Œ๋„ŒํŠธ๊ฐ€ ์žˆ๊ณ  ์ฟผ๋ฆฌ๊ฐ€ ์ฃผ๋กœ ํ•œ ํ…Œ๋„ŒํŠธ ๋‚ด์—์„œ ์ด๋ฃจ์–ด์งˆ ๋•Œ ์œ ํšจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ๋„ŒํŠธ๊ฐ€ ์ˆ˜๋ฐฑ~์ˆ˜์ฒœ ๊ฐœ๊ฐ€ ๋˜๋ฉด ๊ด€๋ฆฌ๊ฐ€ ๊ณ ํ†ต์Šค๋Ÿฌ์›Œ์ง‘๋‹ˆ๋‹ค.
  • ํ•ด์‹œ(Hash)๋Š” ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ๊ฐ€ ์—†๊ณ  ์“ฐ๊ธฐ๋ฅผ ๊ณ ๋ฅด๊ฒŒ ๋ถ„์‚ฐํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ๋กœ๊ทธ์—์„œ๋Š” ๋ณด์กด ๋ฐ ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ํƒ์ƒ‰์„ ์–ด๋ ต๊ฒŒ ํ•˜๋ฏ€๋กœ ๋œ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.
  • ์„œ๋ธŒํŒŒํ‹ฐ์…”๋‹(์‹œ๊ฐ„ + ํ…Œ๋„ŒํŠธ)์€ ๊ฐ•๋ ฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณต์žก๋„๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๋†’์€ ๋ณผ๋ฅจ ์‹œ์Šคํ…œ๊ณผ ์—„๊ฒฉํ•œ ํ…Œ๋„ŒํŠธ ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•œ๋‹ค๋ฉด, ํƒ์ƒ‰๊ณผ ๋ณด์กด ๋ฐฉ์‹์— ๋งž๋Š” ํŒŒํ‹ฐ์…˜ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ฅด์„ธ์š”. ๋งค์šฐ ๋†’์€ ๋ณผ๋ฅจ์ด๋‚˜ ์—„๊ฒฉํ•œ ๋ณด์กด์ด ํ•„์š”ํ•˜๋ฉด ์ผ๊ฐ„ ํŒŒํ‹ฐ์…˜์ด ์˜๋ฏธ๊ฐ€ ์žˆ๊ณ , ์ค‘๊ฐ„ ๋ณผ๋ฅจ์ด๋ฉด ์›”๊ฐ„ ํŒŒํ‹ฐ์…˜์ด ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์‹ค์šฉ์  ์˜ˆ: ๊ด€๋ฆฌ์žํŒ€์ด ๋งค์ผ ์‹คํŒจํ•œ ๋กœ๊ทธ์ธ ์‹œ๋„๋ฅผ ํ™•์ธํ•˜๊ณ  ์ง€๋‚œ 7์ผ๋กœ ํ•„ํ„ฐํ•œ๋‹ค๋ฉด, ์ผ๋ณ„ ๋˜๋Š” ์ฃผ๋ณ„ ํŒŒํ‹ฐ์…˜์€ ์ฟผ๋ฆฌ๊ฐ€ ์ตœ์‹  ํŒŒํ‹ฐ์…˜๋งŒ ๊ฑด๋“œ๋ฆฌ๊ฒŒ ํ•˜์—ฌ PostgreSQL์ด ๋‚˜๋จธ์ง€๋ฅผ ๋ฌด์‹œํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์ ‘๊ทผ์„ ์„ ํƒํ•˜๋“ , ๋ฏธ๋ž˜ ํŒŒํ‹ฐ์…˜ ์ƒ์„ฑ, ๋Šฆ๊ฒŒ ๋„์ฐฉํ•˜๋Š” ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ, ๊ฒฝ๊ณ„(์ผ ๋งˆ๊ฐ, ์›” ๋งˆ๊ฐ)์—์„œ์˜ ๋™์ž‘ ์ •์˜ ๊ฐ™์€ ์ง€๋ฃจํ•œ ๋ถ€๋ถ„์„ ๊ณ„ํšํ•˜์„ธ์š”. ์ด๋Ÿฌํ•œ ๋ฃจํ‹ด์ด ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€๋  ๋•Œ ํŒŒํ‹ฐ์…”๋‹์€ ๊ฐ€์น˜๋ฅผ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค.

์ ์ ˆํ•œ ํŒŒํ‹ฐ์…˜ ํ‚ค ์„ ํƒ ๋ฐฉ๋ฒ•

ํ•„ํ„ฐ๋ฅผ ์‹ค์ œ ์•ฑ์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ
์‹œ๊ฐ„, ํ–‰์œ„์ž, ์—”ํ‹ฐํ‹ฐ, ์ƒํƒœ ๊ฐ™์€ ์‹ค์ œ ํ•„ํ„ฐ์™€ ์ผ์น˜ํ•˜๋Š” ๋ฐฑ์—”๋“œ์™€ ์›น UI๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”.
์•ฑ ์ƒ์„ฑ

์ข‹์€ ํŒŒํ‹ฐ์…˜ ํ‚ค๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ํ…Œ์ด๋ธ”์„ ์–ด๋–ป๊ฒŒ ์ฝ๋Š”์ง€์™€ ๋งž์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๋ฐ ๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ๊ฒฝ์šฐ ๊ด€๋ฆฌ์ž ํŒจ๋„์—์„œ ์‚ฌ๋žŒ๋“ค์ด ์ฒซ ๋ฒˆ์งธ๋กœ ์–ด๋–ค ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ํŒ€์€ ์‹œ๊ฐ„ ๋ฒ”์œ„(์ตœ๊ทผ 24์‹œ๊ฐ„, ์ตœ๊ทผ 7์ผ, ์‚ฌ์šฉ์ž ์ง€์ • ๋‚ ์งœ)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์‚ฌ์‹ค์ด๋ผ๋ฉด ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ํŒŒํ‹ฐ์…”๋‹์ด ๊ฐ€์žฅ ํฌ๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ด๋“์„ ์ค๋‹ˆ๋‹ค.

ํ‚ค๋ฅผ ์žฅ๊ธฐ์ ์ธ ์•ฝ์†์œผ๋กœ ๋‹ค๋ฃจ์„ธ์š”. ์ˆ˜๋…„๊ฐ„ ๊ณ„์†ํ•  ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด ๋จผ์ € ์“ฐ๋Š” "์ฒซ ๋ฒˆ์งธ ํ•„ํ„ฐ"๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”

๋Œ€๋ถ€๋ถ„์˜ ๊ด€๋ฆฌ์ž ํ™”๋ฉด์€ ์‹œ๊ฐ„ ๋ฒ”์œ„์™€ ์„ ํƒ์  ์‚ฌ์šฉ์ž, ์•ก์…˜, ์ƒํƒœ, ๋ฆฌ์†Œ์Šค๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ์ผ์ฐ ๊พธ์ค€ํžˆ ์ขํžˆ๋Š” ํ•ญ๋ชฉ์œผ๋กœ ํŒŒํ‹ฐ์…˜ํ•˜์„ธ์š”.

๊ฐ„๋‹จํ•œ ํ˜„์‹ค ๊ฒ€์‚ฌ:

  • ๊ธฐ๋ณธ ๋ทฐ๊ฐ€ "์ตœ๊ทผ ์ด๋ฒคํŠธ"๋ผ๋ฉด ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒŒํ‹ฐ์…˜ํ•˜์„ธ์š”.
  • ๊ธฐ๋ณธ ๋ทฐ๊ฐ€ "ํ•œ ํ…Œ๋„ŒํŠธ/๊ณ„์ •์˜ ์ด๋ฒคํŠธ"๋ผ๋ฉด tenant_id๊ฐ€ ์˜๋ฏธ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ…Œ๋„ŒํŠธ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์ปค์•ผ ๊ทธ ์„ ํƒ์ด ์ •๋‹นํ™”๋ฉ๋‹ˆ๋‹ค.
  • ์ฒซ ๋‹จ๊ณ„๊ฐ€ ํ•ญ์ƒ "์‚ฌ์šฉ์ž ์„ ํƒ"์ด๋ผ๋ฉด user_id๋กœ์˜ ํŒŒํ‹ฐ์…”๋‹์€ ์œ ํ˜น์ ์ผ ์ˆ˜ ์žˆ์œผ๋‚˜ ๊ด€๋ฆฌํ•ด์•ผ ํ•  ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.

๊ณ ์นด๋””๋„๋ฆฌํ‹ฐ ํ‚ค๋ฅผ ํ”ผํ•˜์„ธ์š”

ํŒŒํ‹ฐ์…”๋‹์€ ๊ฐ ํŒŒํ‹ฐ์…˜์ด ์˜๋ฏธ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ฒญํฌ์ผ ๋•Œ ๊ฐ€์žฅ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. user_id, session_id, request_id, device_id ๊ฐ™์€ ํ‚ค๋Š” ์ˆ˜์ฒœ~์ˆ˜๋ฐฑ๋งŒ์˜ ํŒŒํ‹ฐ์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ํ•˜๋ฉฐ ์ฟผ๋ฆฌ ํ”Œ๋ž˜๋‹์„ ๋А๋ฆฌ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ํŒŒํ‹ฐ์…˜์€ ํŒŒํ‹ฐ์…˜ ์ˆ˜๋ฅผ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ฐ„, ์ฃผ๊ฐ„, ์›”๊ฐ„ ์ค‘์—์„œ ๋ณผ๋ฅจ์— ๋”ฐ๋ผ ์„ ํƒํ•˜์„ธ์š”. ๋„ˆ๋ฌด ์ ์œผ๋ฉด(์—ฐ๊ฐ„) ๋„์›€์ด ์ ๊ณ , ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด(์‹œ๊ฐ„๋ณ„) ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋นจ๋ฆฌ ์ปค์ง‘๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ํƒ€์ž„์Šคํƒฌํ”„ ์„ ํƒ: created_at vs occurred_at

์‹œ๊ฐ„์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ช…ํ™•ํžˆ ํ•˜์„ธ์š”:

  • occurred_at: ์ด๋ฒคํŠธ๊ฐ€ ์ œํ’ˆ์—์„œ ์‹ค์ œ๋กœ ๋ฐœ์ƒํ•œ ์‹œ๊ฐ„.
  • created_at: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ด๋ฅผ ๊ธฐ๋กํ•œ ์‹œ๊ฐ„.

๊ฐ์‚ฌ์˜ ๊ฒฝ์šฐ ๋ณดํ†ต "์–ธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๊ฐ€"๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐฐ๋‹ฌ ์ง€์—ฐ(์˜คํ”„๋ผ์ธ ๋ชจ๋ฐ”์ผ, ์žฌ์‹œ๋„, ํ) ๋•Œ๋ฌธ์— occurred_at์ด ๋Šฆ๊ฒŒ ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Šฆ์€ ๋„์ฐฉ์ด ํ”ํ•˜๋ฉด created_at์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹ํ•˜๊ณ  occurred_at์„ ํ•„ํ„ฐ์šฉ ์ธ๋ฑ์Šค๋กœ ๋‘๋Š” ๊ฒƒ์ด ์šด์˜์ƒ ๋” ์•ˆ์ •์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์˜ต์…˜์€ ๋ช…ํ™•ํ•œ ๋ฐฑํ•„ ์ •์ฑ…์„ ์ •์˜ํ•˜๊ณ  ์˜ค๋ž˜๋œ ํŒŒํ‹ฐ์…˜์ด ๊ฐ€๋” ๋Šฆ์€ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์‹œ๊ฐ„์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•˜์„ธ์š”. ์ผ๊ด€๋œ ํƒ€์ž…(๋ณดํ†ต timestamptz)์„ ์‚ฌ์šฉํ•˜๊ณ  UTC๋ฅผ ์†Œ์Šค ์˜ค๋ธŒ ํŠธ๋ฃจ์Šค๋กœ ์‚ผ์œผ์„ธ์š”. ๋ทฐ์–ด์˜ ํƒ€์ž„์กด์€ UI์—์„œ ๋ Œ๋”๋งํ•˜์„ธ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํŒŒํ‹ฐ์…˜ ๊ฒฝ๊ณ„๊ฐ€ ์•ˆ์ •์ ์ด๊ณ  ์„œ๋จธํƒ€์ž„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

๋‹จ๊ณ„๋ณ„: ํŒŒํ‹ฐ์…”๋‹ ๊ณ„ํš ๋ฐ ๋กค์•„์›ƒ

๋กœ๊ทธ ๊ฒ€์ƒ‰์— ๊ฐ€๋“œ๋ ˆ์ผ ์ถ”๊ฐ€ํ•˜๊ธฐ
๊ธฐ๋ณธ๊ฐ’์„ '์ตœ๊ทผ 24์‹œ๊ฐ„'์œผ๋กœ ์„ค์ •ํ•ด ๋กœ๊ทธ ๊ฒ€์ƒ‰์ด ๋ณผ๋ฅจ ์ฆ๊ฐ€์—๋„ ๋น ๋ฅด๊ฒŒ ์œ ์ง€๋˜๋„๋ก ํ•˜์„ธ์š”.
์ง€๊ธˆ ์‹œ๋„ํ•ด๋ณด๊ธฐ

ํŒŒํ‹ฐ์…”๋‹์€ ๋น ๋ฅธ ์ˆ˜์ •์ด ์•„๋‹ˆ๋ผ ์ž‘์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”„๋กœ์ ํŠธ๋กœ ์ทจ๊ธ‰ํ•  ๋•Œ ๊ฐ€์žฅ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋ชฉํ‘œ๋Š” ๋‹จ์ˆœํ•œ ์“ฐ๊ธฐ, ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ฝ๊ธฐ, ๊ทธ๋ฆฌ๊ณ  ๋ณด์กด์ด ์ผ์ƒ์ ์ธ ์ž‘์—…์ด ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค์šฉ์ ์ธ ๋กค์•„์›ƒ ๊ณ„ํš

  1. ๋ณผ๋ฅจ์— ๋งž๋Š” ํŒŒํ‹ฐ์…˜ ํฌ๊ธฐ๋ฅผ ์„ ํƒํ•˜์„ธ์š”. ์›”๊ฐ„ ํŒŒํ‹ฐ์…˜์€ ์›” ์ˆ˜์‹ญ๋งŒ ํ–‰ ์ˆ˜์ค€์—์„œ ๋Œ€์ฒด๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์›”๊ฐ„ ์ˆ˜์ฒœ๋งŒ ํ–‰์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด ์ฃผ๊ฐ„ ๋˜๋Š” ์ผ๊ฐ„ ํŒŒํ‹ฐ์…˜์ด ์ธ๋ฑ์Šค๋ฅผ ๋” ์ž‘๊ฒŒ ์œ ์ง€ํ•˜๊ณ  VACUUM ์ž‘์—…์„ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  2. ํŒŒํ‹ฐ์…˜ํ™”๋œ ํ…Œ์ด๋ธ”์˜ ํ‚ค์™€ ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ค๊ณ„ํ•˜์„ธ์š”. PostgreSQL์—์„œ๋Š” ๊ณ ์œ  ์ œ์•ฝ์ด ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”ํ•œ ํŒจํ„ด์€ ํŒŒํ‹ฐ์…˜ ํ‚ค๋กœ created_at์„ ์‚ฌ์šฉํ•˜๊ณ  id๋ฅผ ํ•จ๊ป˜ ํฌํ•จํ•œ (created_at, id) ๊ฐ™์€ ๋ณตํ•ฉ ์ œ์•ฝ์„ ๋‘๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‚˜์ค‘์— ๊ธฐ๋Œ€ํ–ˆ๋˜ ์ œ์•ฝ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์•„ ๋‹นํ™ฉํ•˜๋Š” ์ผ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ๋ฏธ๋ž˜ ํŒŒํ‹ฐ์…˜์„ ํ•„์š” ์ „์— ๋งŒ๋“œ์„ธ์š”. ํŒŒํ‹ฐ์…˜์ด ์—†์–ด ์‚ฝ์ž…์ด ์‹คํŒจํ•˜์ง€ ์•Š๋„๋ก ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด 2~3๊ฐœ์›”์น˜ ๋ฏธ๋ž˜ ํŒŒํ‹ฐ์…˜์„ ๋ฏธ๋ฆฌ ๋งŒ๋“œ๋Š” ๋ฃจํ‹ด์„ ์ •ํ•ด๋‘๋ฉด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

  4. ํŒŒํ‹ฐ์…˜๋ณ„ ์ธ๋ฑ์Šค๋Š” ์ž‘๊ณ  ์˜๋„์ ์œผ๋กœ ์œ ์ง€ํ•˜์„ธ์š”. ํŒŒํ‹ฐ์…”๋‹์ด ์ธ๋ฑ์Šค๋ฅผ ๊ณต์งœ๋กœ ๋งŒ๋“ค์–ด์ฃผ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”์€ ํŒŒํ‹ฐ์…˜ ํ‚ค ์™ธ์— ํ–‰์œ„์ž(actor_id), ์—”ํ‹ฐํ‹ฐ(entity_id), ์ด๋ฒคํŠธ ํƒ€์ž… ๊ฐ™์€ ์‹ค์ œ ๊ด€๋ฆฌ์ž ํ•„ํ„ฐ์— ๋งž๋Š” 1~2๊ฐœ์˜ ์ธ๋ฑ์Šค๋ฅผ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. "ํ˜น์‹œ ๋ชฐ๋ผ" ์‹์˜ ์ธ๋ฑ์Šค๋Š” ํ”ผํ•˜์„ธ์š”. ํ•„์š”ํ•˜๋ฉด ์ƒˆ ํŒŒํ‹ฐ์…˜์— ์ถ”๊ฐ€ํ•˜๊ณ  ์˜ค๋ž˜๋œ ํŒŒํ‹ฐ์…˜์€ ๋ฐฑํ•„(backfill)ํ•˜์„ธ์š”.

  5. ๋ณด์กด์€ ํ–‰ ์‚ญ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ํŒŒํ‹ฐ์…˜ ๋“œ๋กญ์„ ์ค‘์‹ฌ์œผ๋กœ ๊ณ„ํšํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด 180์ผ์„ ๋ณด๊ด€ํ•œ๋‹ค๋ฉด ์˜ค๋ž˜๋œ ํŒŒํ‹ฐ์…˜์„ ๋“œ๋กญํ•˜๋ฉด ๋Œ€๋Ÿ‰ DELETE๋ณด๋‹ค ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋ˆ„๊ฐ€ ์–ธ์ œ ๋ณด์กด์„ ์‹คํ–‰ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ฒ€์ฆ ๋ฐฉ๋ฒ•๊นŒ์ง€ ๋ฌธ์„œํ™”ํ•˜์„ธ์š”.

์ž‘์€ ์˜ˆ

๊ฐ์‚ฌ ํ…Œ์ด๋ธ”์ด ์ฃผ๋‹น 500๋งŒ ํ–‰์„ ๋ฐ›๋Š”๋‹ค๋ฉด created_at ๊ธฐ๋ฐ˜์˜ ์ฃผ๊ฐ„ ํŒŒํ‹ฐ์…˜์ด ํ•ฉ๋ฆฌ์  ์‹œ์ž‘์ž…๋‹ˆ๋‹ค. 8์ฃผ์น˜ ๋ฏธ๋ž˜ ํŒŒํ‹ฐ์…˜์„ ๋งŒ๋“ค๊ณ  ํŒŒํ‹ฐ์…˜๋‹น ํ–‰์œ„์ž ๊ฒ€์ƒ‰์šฉ ์ธ๋ฑ์Šค์™€ ์—”ํ‹ฐํ‹ฐ ID์šฉ ์ธ๋ฑ์Šค ๋“ฑ ๋‘ ๊ฐœ์˜ ์ธ๋ฑ์Šค๋ฅผ ์œ ์ง€ํ•˜์„ธ์š”. ๋ณด์กด ๊ธฐ๊ฐ„์ด ๋๋‚˜๋ฉด ์ˆ˜๋ฐฑ๋งŒ ํ–‰์„ ์‚ญ์ œํ•˜๋Š” ๋Œ€์‹  ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ์ฃผ๊ฐ„ ํŒŒํ‹ฐ์…˜์„ ๋“œ๋กญํ•˜์„ธ์š”.

๋‚ด๋ถ€ ๋„๊ตฌ๋ฅผ AppMaster๋กœ ๋งŒ๋“ ๋‹ค๋ฉด ํŒŒํ‹ฐ์…˜ ํ‚ค์™€ ์ œ์•ฝ์„ ์ผ์ฐ ๊ฒฐ์ •ํ•ด์„œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ์ƒ์„ฑ๋œ ์ฝ”๋“œ๊ฐ€ ๊ฐ™์€ ์ „์ œ๋ฅผ ๋”ฐ๋ฅด๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

ํŒŒํ‹ฐ์…”๋‹์ด ๊ด€๋ฆฌ์ž ํŒจ๋„ ํ•„ํ„ฐ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ

๋กœ๊ทธ ํ…Œ์ด๋ธ”์„ ํŒŒํ‹ฐ์…”๋‹ํ•˜๋ฉด ๊ด€๋ฆฌ์ž ํŒจ๋„ ํ•„ํ„ฐ๋Š” ๋‹จ์ˆœํ•œ UI ์š”์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•„ํ„ฐ๊ฐ€ ์ฟผ๋ฆฌ๊ฐ€ ๋ช‡ ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์„ ๊ฑด๋“œ๋ฆด์ง€ ๋˜๋Š” ๋ช‡ ๋‹ฌ์น˜๋ฅผ ์Šค์บ”ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ฃผ์š” ์š”์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์‹ค์šฉ์ ์ธ ๋ณ€ํ™”๋Š”: ์ด์ œ ์‹œ๊ฐ„์€ ์„ ํƒ์ ์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋‚ ์งœ ๋ฒ”์œ„ ์—†์ด ๋ฌด์ฐจ๋ณ„ ๊ฒ€์ƒ‰์„ ํ—ˆ์šฉํ•˜๋ฉด PostgreSQL์ด ๋ชจ๋“ (๋˜๋Š” ๋งŽ์€) ํŒŒํ‹ฐ์…˜์„ ํ™•์ธํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ™•์ธ์ด ๋น ๋ฅด๋”๋ผ๋„ ๋งŽ์€ ํŒŒํ‹ฐ์…˜์„ ์—ฌ๋Š” ๊ฒƒ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด ํŽ˜์ด์ง€๊ฐ€ ๋А๋ ค์ง€๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค๋ฌด ๊ทœ์น™: ๋กœ๊ทธ์™€ ๊ฐ์‚ฌ ๊ฒ€์ƒ‰์—๋Š” ์‹œ๊ฐ„ ๋ฒ”์œ„๋ฅผ ์š”๊ตฌํ•˜๊ณ  ๊ธฐ๋ณธ๊ฐ’์„ "์ตœ๊ทผ 24์‹œ๊ฐ„"์ฒ˜๋Ÿผ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ •๋ง๋กœ "์ „์ฒด ๊ธฐ๊ฐ„"์„ ์›ํ•˜๋ฉด ์˜๋„์ ์ธ ์„ ํƒ์œผ๋กœ ๋งŒ๋“ค๊ณ  ๋А๋ฆด ์ˆ˜ ์žˆ์Œ์„ ๊ฒฝ๊ณ ํ•˜์„ธ์š”.

ํŒŒํ‹ฐ์…˜ ํ”„๋ฃจ๋‹๊ณผ ํ•„ํ„ฐ๋ฅผ ์ผ์น˜์‹œํ‚ค์„ธ์š”

ํŒŒํ‹ฐ์…˜ ํ”„๋ฃจ๋‹์€ WHERE ์ ˆ์ด PostgreSQL์ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ํฌํ•จํ•  ๋•Œ๋งŒ ๋„์›€๋ฉ๋‹ˆ๋‹ค. created_at BETWEEN X AND Y ๊ฐ™์€ ํ•„ํ„ฐ๋Š” ๊น”๋”ํ•˜๊ฒŒ ํ”„๋ฃจ๋‹๋ฉ๋‹ˆ๋‹ค. ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋‚ ์งœ๋กœ ์บ์ŠคํŒ…ํ•˜๊ฑฐ๋‚˜ ์ปฌ๋Ÿผ์„ ํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ๋Š” ํŒจํ„ด, ๋˜๋Š” ํŒŒํ‹ฐ์…˜ ํ‚ค์™€ ๋‹ค๋ฅธ ์‹œ๊ฐ„ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•„ํ„ฐ๋Š” ํ”„๋ฃจ๋‹์„ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ํŒŒํ‹ฐ์…˜ ๋‚ด๋ถ€์—์„œ๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์‚ฌ๋žŒ๋“ค์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ํ•„ํ„ฐํ•˜๋Š”์ง€์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค๋ฌด์ ์œผ๋กœ ์‹œ๊ฐ„ ํ”Œ๋Ÿฌ์Šค ํ•˜๋‚˜์˜ ์กฐ๊ฑด(ํ…Œ๋„ŒํŠธ/์›Œํฌ์ŠคํŽ˜์ด์Šค, ์‚ฌ์šฉ์ž, ์•ก์…˜ ํƒ€์ž…, ์—”ํ‹ฐํ‹ฐ ID, ์ƒํƒœ)์ด ์ž์ฃผ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ •๋ ฌ ๋ฐ ํŽ˜์ด์ง•: ์–•๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”

ํŒŒํ‹ฐ์…”๋‹์ด ๊นŠ์€ ํŽ˜์ด์ง• ๋ฌธ์ œ๋ฅผ ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ํŒจ๋„์ด ์ตœ์‹ ์ˆœ ์ •๋ ฌ์— ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€ 5000์œผ๋กœ ๊ฑด๋„ˆ๋›ด๋‹ค๋ฉด ๊นŠ์€ OFFSET ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•์€ ์—ฌ์ „ํžˆ ๋งŽ์€ ํ–‰์„ ๊ฑด๋„ˆ๋›ฐ๊ฒŒ ํ•˜์—ฌ ๋А๋ฆฝ๋‹ˆ๋‹ค.

๋กœ๊ทธ์—๋Š” ์ปค์„œํ˜• ํŽ˜์ด์ง•์ด ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค: "์ด (ํƒ€์ž„์Šคํƒฌํ”„,id) ์ด์ „์˜ ์ด๋ฒคํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ"์ฒ˜๋Ÿผ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํฐ OFFSET์„ ๊ฑด๋„ˆ๋›ฐ๋Š” ๋น„์šฉ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ฆฌ์…‹๋„ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜(์ตœ๊ทผ 24์‹œ๊ฐ„, ์ตœ๊ทผ 7์ผ, ์˜ค๋Š˜, ์–ด์ œ, ์‚ฌ์šฉ์ž ์ง€์ • ๋ฒ”์œ„)์„ ์ œ๊ณตํ•˜๋ฉด ์šฐ๋ฐœ์ ์ธ "์ „์ฒด ์Šค์บ”"์„ ์ค„์ด๊ณ  ๊ด€๋ฆฌ์ž ๊ฒฝํ—˜์„ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

ํ”ํ•œ ์‹ค์ˆ˜์™€ ํ•จ์ •

๋น ๋ฅธ ๋กœ๊ทธ ๊ด€๋ฆฌ์ž ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ
์ฒ˜์Œ๋ถ€ํ„ฐ ํ•„์ˆ˜ ์‹œ๊ฐ„ ํ•„ํ„ฐ์™€ ๋น ๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ–์ถ˜ ๊ด€๋ฆฌ์ž ๋กœ๊ทธ ๋ทฐ์–ด๋ฅผ ๊ตฌ์ถ•ํ•˜์„ธ์š”.
AppMaster ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

๋Œ€๋ถ€๋ถ„์˜ ํŒŒํ‹ฐ์…”๋‹ ํ”„๋กœ์ ํŠธ๋Š” ๋‹จ์ˆœํ•œ ์ด์œ ๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค: ํŒŒํ‹ฐ์…”๋‹ ์ž์ฒด๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ์ฟผ๋ฆฌ์™€ ๊ด€๋ฆฌ์ž UI๊ฐ€ ๊ทธ๊ฒƒ๊ณผ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…”๋‹์ด ํšจ๊ณผ๋ฅผ ๋ฐœํœ˜ํ•˜๋ ค๋ฉด ์‹ค์ œ ํ•„ํ„ฐ์™€ ์‹ค์ œ ๋ณด์กด ๊ทœ์น™ ์ฃผ์œ„๋กœ ์„ค๊ณ„ํ•˜์„ธ์š”.

1) ์ž˜๋ชป๋œ ์‹œ๊ฐ„ ์ปฌ๋Ÿผ์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹

ํŒŒํ‹ฐ์…˜ ํ”„๋ฃจ๋‹์€ WHERE ์ ˆ์ด ํŒŒํ‹ฐ์…˜ ํ‚ค์™€ ์ผ์น˜ํ•  ๋•Œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ”ํ•œ ์‹ค์ˆ˜๋Š” created_at์œผ๋กœ ํŒŒํ‹ฐ์…˜์„ ๋‚˜๋ˆˆ ๋’ค ๊ด€๋ฆฌ์ž ํŒจ๋„์ด event_time์œผ๋กœ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ง€์›ํŒ€์ด ํ•ญ์ƒ "10:00~10:15 ์‚ฌ์ด์— ๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ๋‚˜"๋ฅผ ๋ฌป๋Š”๋ฐ ํ…Œ์ด๋ธ”์ด ์ˆ˜์‹  ์‹œ๊ฐ„์œผ๋กœ ํŒŒํ‹ฐ์…˜๋˜์–ด ์žˆ์œผ๋ฉด ๊ธฐ๋Œ€๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฑด๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2) ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์€ ํŒŒํ‹ฐ์…˜ ์ƒ์„ฑ

์‹œ๊ฐ„๋‹น(๋˜๋Š” ๋” ์ž‘์€) ํŒŒํ‹ฐ์…˜์€ ๋ณด๊ธฐ์—๋Š” ๊น”๋”ํ•˜์ง€๋งŒ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฝ๋‹ˆ๋‹ค: ๊ด€๋ฆฌํ•  ๊ฐ์ฒด ์ฆ๊ฐ€, ์ฟผ๋ฆฌ ํ”Œ๋ž˜๋„ˆ์˜ ์ž‘์—… ์ฆ๊ฐ€, ์ธ๋ฑ์Šค๋‚˜ ๊ถŒํ•œ ๋ˆ„๋ฝ ๊ฐ€๋Šฅ์„ฑ ์ฆ๊ฐ€. ๊ทน๋‹จ์ ์ธ ์“ฐ๊ธฐ๋Ÿ‰๊ณผ ์—„๊ฒฉํ•œ ๋ณด์กด ์š”๊ตฌ๊ฐ€ ์—†๋‹ค๋ฉด ์ผ๊ฐ„ ๋˜๋Š” ์›”๊ฐ„ ํŒŒํ‹ฐ์…˜์ด ์šด์˜์ƒ ๋” ์‰ฌ์šด ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

3) ์ „์—ญ ๊ณ ์œ ์„ฑ์ด ์—ฌ์ „ํžˆ ์ž‘๋™ํ•œ๋‹ค๊ณ  ๊ฐ€์ •

ํŒŒํ‹ฐ์…”๋‹๋œ ํ…Œ์ด๋ธ”์—๋Š” ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค: ์ผ๋ถ€ ๊ณ ์œ  ์ธ๋ฑ์Šค๋Š” ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ํฌํ•จํ•ด์•ผ ์ „์ฒด ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•ด ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. event_id๊ฐ€ ์ „์—ญ์ ์œผ๋กœ ์œ ์ผํ•˜๋‹ค๊ณ  ๊ธฐ๋Œ€ํ•˜๋ฉด ๋†€๋ž„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์—ญ ๊ณ ์œ  ์‹๋ณ„์ž๊ฐ€ ํ•„์š”ํ•˜๋ฉด UUID๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด์—์„œ ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•˜์„ธ์š”.

4) ๊ด€๋ฆฌ์ž UI๊ฐ€ ์ œํ•œ ์—†๋Š” ๊ฒ€์ƒ‰์„ ํ—ˆ์šฉ

๊ด€๋ฆฌ์ž ํŒจ๋„์ด ์นœ์ ˆํ•œ ๊ฒ€์ƒ‰ ์ƒ์ž๋ฅผ ์ œ๊ณตํ•ด์„œ ํ•„ํ„ฐ ์—†์ด ์‹คํ–‰๋˜๊ฒŒ ํ•˜๋ฉด ํŒŒํ‹ฐ์…˜๋œ ๋กœ๊ทธ ํ…Œ์ด๋ธ”์—์„œ๋Š” ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์„ ์Šค์บ”ํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€ ํŽ˜์ด๋กœ๋“œ์— ๋Œ€ํ•œ ์ž์œ  ํ…์ŠคํŠธ ๊ฒ€์ƒ‰์€ ํŠนํžˆ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋“œ๋ ˆ์ผ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”: ์‹œ๊ฐ„ ๋ฒ”์œ„๋ฅผ ํ•„์ˆ˜๋กœ ํ•˜๊ณ  ๊ธฐ๋ณธ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜๋ฉฐ "์ „์ฒด ๊ธฐ๊ฐ„"์€ ์˜๋„๋œ ์„ ํƒ์œผ๋กœ ๋งŒ๋“œ์„ธ์š”.

5) ๋ณด์กด ๊ณ„ํš(๋ฐ ํŒŒํ‹ฐ์…˜ ๊ด€๋ฆฌ ๊ณ„ํš)์ด ์—†์Œ

ํŒŒํ‹ฐ์…”๋‹์ด ์ž๋™์œผ๋กœ ๋ณด์กด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ •์ฑ…์ด ์—†์œผ๋ฉด ์˜ค๋ž˜๋œ ํŒŒํ‹ฐ์…˜์ด ์Œ“์—ฌ ์ €์žฅ์ด ์ง€์ €๋ถ„ํ•ด์ง€๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋А๋ ค์ง‘๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์šด์˜ ๊ทœ์น™์ด ๋ณดํ†ต ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•ฉ๋‹ˆ๋‹ค: ์›์‹œ ์ด๋ฒคํŠธ ๋ณด๊ด€ ๊ธฐ๊ฐ„์„ ์ •์˜ํ•˜๊ณ , ๋ฏธ๋ž˜ ํŒŒํ‹ฐ์…˜ ์ƒ์„ฑ๊ณผ ์˜ค๋ž˜๋œ ํŒŒํ‹ฐ์…˜ ์‚ญ์ œ๋ฅผ ์ž๋™ํ™”ํ•˜๋ฉฐ, ์ธ๋ฑ์Šค๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์ ์šฉํ•˜๊ณ  ํŒŒํ‹ฐ์…˜ ์ˆ˜์™€ ๊ฒฝ๊ณ„ ๋‚ ์งœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ฉฐ ๊ฐ€์žฅ ๋А๋ฆฐ ๊ด€๋ฆฌ์ž ํ•„ํ„ฐ๋ฅผ ํ˜„์‹ค์  ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜์„ธ์š”.

์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ํ™•์ธํ•  ๋น ๋ฅธ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

๋‚ด๋ถ€ ๋„๊ตฌ๋ฅผ ์ž์‹  ์žˆ๊ฒŒ ํ™•์žฅํ•˜๊ธฐ
๋กœ๊ทธ, ์ž‘์—…, ์›นํ›…์ด ๋Š˜์–ด๋‚  ๋•Œ๋„ ๋‚ด๋ถ€ ๋„๊ตฌ๊ฐ€ ์‘๋‹ต์„ฑ์„ ์œ ์ง€ํ•˜๋„๋ก ๋งŒ๋“œ์„ธ์š”.
AppMaster๋กœ ๊ตฌ์ถ•ํ•˜๊ธฐ

ํŒŒํ‹ฐ์…”๋‹์€ ๊ฐ์‚ฌ ๋กœ๊ทธ์— ํฐ ์ด๋“์„ ์ค„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ฃผ๊ธฐ์ ์ธ ์ž‘์—…์ด ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. ์Šคํ‚ค๋งˆ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์ „์— ์‚ฌ๋žŒ๋“ค์ด ์‹ค์ œ๋กœ ํ…Œ์ด๋ธ”์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ ๊ฒ€ํ•˜์„ธ์š”.

์ฃผ์š” ๊ณ ์žฅ ์ง€์ ์— ๋Œ€ํ•œ ์งง์€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ:

  • ์‹œ๊ฐ„ ๋ฒ”์œ„๊ฐ€ ๊ธฐ๋ณธ ํ•„ํ„ฐ์ธ์ง€ ํ™•์ธํ•˜์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ๊ด€๋ฆฌ์ž ์ฟผ๋ฆฌ๋Š” ๋ช…ํ™•ํ•œ ์ฐฝ(from/to)์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์ œํ•œ ๊ฒ€์ƒ‰์ด ํ”ํ•˜๋ฉด ํŒŒํ‹ฐ์…˜ ํ”„๋ฃจ๋‹์˜ ํšจ๊ณผ๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
  • ๋ณด์กด์€ ํ–‰ ์‚ญ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ํŒŒํ‹ฐ์…˜ ๋“œ๋กญ์œผ๋กœ ๊ฐ•์ œํ•˜์„ธ์š”. ์˜ค๋ž˜๋œ ํŒŒํ‹ฐ์…˜์„ ๋“œ๋กญํ•˜๋Š” ๋ฐ ๋ถˆํŽธํ•จ์ด ์—†๋Š”์ง€ ํ™•์‹คํžˆ ํ•˜์„ธ์š”.
  • ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ํ•ฉ๋ฆฌ์ ์ธ์ง€ ์ถ”์ •ํ•˜์„ธ์š”. ์—ฐ๊ฐ„ ํŒŒํ‹ฐ์…˜ ์ˆ˜(์ผ๊ฐ„/์ฃผ๊ฐ„/์›”๊ฐ„)๋ฅผ ๊ณ„์‚ฐํ•ด ๋„ˆ๋ฌด ๋งŽ์ง€๋„, ๋„ˆ๋ฌด ์ ์ง€๋„ ์•Š๊ฒŒ ํ•˜์„ธ์š”.
  • ์ธ๋ฑ์Šค๊ฐ€ ์‹ค์ œ ์‚ฌ์šฉ ํ•„ํ„ฐ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ํŒŒํ‹ฐ์…˜ ํ‚ค ์™ธ์— ๊ณตํ†ต ํ•„ํ„ฐ์™€ ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ์ง€์›ํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ํŒŒํ‹ฐ์…˜๋ณ„๋กœ ์œ ์ง€ํ•˜์„ธ์š”.
  • ํŒŒํ‹ฐ์…˜์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋ง๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๋ฏธ๋ž˜ ํŒŒํ‹ฐ์…˜์„ ์ƒ์„ฑํ•˜๋Š” ์ž‘์—…์ด ์‹คํŒจํ•˜๋ฉด ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์„ธ์š”.

์‹ค์šฉ์  ํ…Œ์ŠคํŠธ: ์ง€์› ๋˜๋Š” ์šด์˜ํŒ€์ด ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ํ•„ํ„ฐ๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”. ๊ทธ์ค‘ ๋‘ ๊ฐ€์ง€๊ฐ€ ๋ณดํ†ต "์‹œ๊ฐ„ ๋ฒ”์œ„ + ํ•˜๋‚˜์˜ ์กฐ๊ฑด"์œผ๋กœ ์ถฉ์กฑ๋œ๋‹ค๋ฉด ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”์˜ PostgreSQL ํŒŒํ‹ฐ์…”๋‹์€ ์ƒ๋‹นํžˆ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์‹ค์ ์ธ ์˜ˆ์™€ ๋‹ค์Œ ๋‹จ๊ณ„

์ง€์›ํŒ€์ด ํ•˜๋ฃจ ์ข…์ผ ๋‘ ํ™”๋ฉด์„ ์ผœ ๋‘ก๋‹ˆ๋‹ค: "๋กœ๊ทธ์ธ ์ด๋ฒคํŠธ"(์„ฑ๊ณต ๋ฐ ์‹คํŒจ ๋กœ๊ทธ์ธ)์™€ "๋ณด์•ˆ ๊ฐ์‚ฌ"(๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ •, ์—ญํ•  ๋ณ€๊ฒฝ, API ํ‚ค ์—…๋ฐ์ดํŠธ). ๊ณ ๊ฐ์ด ์˜์‹ฌ์Šค๋Ÿฌ์šด ํ™œ๋™์„ ์‹ ๊ณ ํ•˜๋ฉด ํŒ€์€ ์‚ฌ์šฉ์ž๋กœ ํ•„ํ„ฐํ•˜๊ณ  ์ง€๋‚œ ๋ช‡ ์‹œ๊ฐ„ ๊ธฐ๋ก์„ ํ™•์ธํ•ด ์งง์€ ๋ณด๊ณ ์„œ๋ฅผ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

ํŒŒํ‹ฐ์…”๋‹ ์ „์—๋Š” ๋ชจ๋“  ๊ฒƒ์ด ํ•˜๋‚˜์˜ ํฐ events ํ…Œ์ด๋ธ”์— ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅด๊ฒŒ ์„ฑ์žฅํ•˜๊ณ  ๋‹จ์ˆœํ•œ ๊ฒ€์ƒ‰๋„ ์˜ค๋ž˜๋œ ๋งŽ์€ ํ–‰์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ด์„œ ๋А๋ ค์ง‘๋‹ˆ๋‹ค. ๋ณด์กด๋„ ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค: ์•ผ๊ฐ„ ์ž‘์—…์ด ์˜ค๋ž˜๋œ ํ–‰์„ ์‚ญ์ œํ•˜์ง€๋งŒ ๋Œ€๋Ÿ‰ ์‚ญ์ œ๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ๋ธ”๋กœํŠธ๋ฅผ ๋งŒ๋“ค๋ฉฐ ์ผ๋ฐ˜ ํŠธ๋ž˜ํ”ฝ๊ณผ ๊ฒฝ์Ÿํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ํƒ€์ž„์Šคํƒฌํ”„ ๊ธฐ์ค€์œผ๋กœ ์›”๋ณ„ ํŒŒํ‹ฐ์…”๋‹์„ ์ ์šฉํ•˜๋ฉด ์›Œํฌํ”Œ๋กœ๊ฐ€ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ํŒจ๋„์ด ์‹œ๊ฐ„ ํ•„ํ„ฐ๋ฅผ ์š”๊ตฌํ•˜๋ฏ€๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์ฟผ๋ฆฌ๋Š” ํ•œ๋‘ ๊ฐœ ํŒŒํ‹ฐ์…˜๋งŒ ๊ฑด๋“œ๋ฆฝ๋‹ˆ๋‹ค. PostgreSQL์ด ์„ ํƒ๋œ ๋ฒ”์œ„ ์™ธ์˜ ํŒŒํ‹ฐ์…˜์„ ๋ฌด์‹œํ•˜๋ฏ€๋กœ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์ด ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค. ๋ณด์กด์€ ์ˆ˜๋ฐฑ๋งŒ ํ–‰์„ ์‚ญ์ œํ•˜๋Š” ๋Œ€์‹  ์˜ค๋ž˜๋œ ํŒŒํ‹ฐ์…˜์„ ๋“œ๋กญํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฃจํ‹ดํ™”๋ฉ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์–ด๋ ค์šด ํ•œ ๊ฐ€์ง€๋Š” "์ „์ฒด ๊ธฐ๊ฐ„"์— ๋Œ€ํ•œ ์ž์œ  ํ…์ŠคํŠธ ๊ฒ€์ƒ‰์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋‚ ์งœ ์ œํ•œ ์—†์ด IP ์ฃผ์†Œ๋‚˜ ๋ชจํ˜ธํ•œ ๋ฌธ๊ตฌ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํŒŒํ‹ฐ์…”๋‹์œผ๋กœ๋Š” ์‹ธ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ์ œํ’ˆ ์ชฝ์—์„œ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค: ๊ฒ€์ƒ‰ ๊ธฐ๋ณธ๊ฐ’์„ ์‹œ๊ฐ„ ์ฐฝ์œผ๋กœ ๋‘๊ณ  "์ตœ๊ทผ 24์‹œ๊ฐ„ / 7์ผ / 30์ผ" ๊ฐ™์€ ๊ฒฝ๋กœ๋ฅผ ๋ˆˆ์— ๋„๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค๋ฌด์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์Œ ๋‹จ๊ณ„:

  • ๊ด€๋ฆฌ์ž ํŒจ๋„ ํ•„ํ„ฐ๋ฅผ ๋จผ์ € ๋งตํ•˜์„ธ์š”. ์‚ฌ๋žŒ๋“ค์ด ์–ด๋–ค ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์–ด๋–ค ํ•„๋“œ๋ฅผ ํ•„์ˆ˜๋กœ ์‚ผ์•„์•ผ ํ•˜๋Š”์ง€ ์ ์–ด๋ณด์„ธ์š”.
  • ํƒ์ƒ‰ ๋ฐฉ์‹์— ๋งž์ถฐ ํŒŒํ‹ฐ์…˜์„ ์„ ํƒํ•˜์„ธ์š”. ์›”๊ฐ„ ํŒŒํ‹ฐ์…˜์ด ๋ณดํ†ต ์ข‹์€ ์ถœ๋ฐœ์ ์ด๋ฉฐ, ๋ณผ๋ฅจ ๋•Œ๋ฌธ์— ํ•„์š”ํ•  ๋•Œ ์ฃผ๊ฐ„์œผ๋กœ ์ด๋™ํ•˜์„ธ์š”.
  • ์‹œ๊ฐ„ ๋ฒ”์œ„๋ฅผ ์ผ๊ธ‰ ์‹œ๋ฏผ์œผ๋กœ ๋งŒ๋“œ์„ธ์š”. UI์—์„œ "๋‚ ์งœ ์—†์Œ"์„ ํ—ˆ์šฉํ•˜๋ฉด ๋А๋ฆฐ ํŽ˜์ด์ง€๋ฅผ ๊ธฐ๋Œ€ํ•˜์„ธ์š”.
  • ์ธ๋ฑ์Šค๋ฅผ ์‹ค์ œ ํ•„ํ„ฐ์™€ ๋งž์ถ”์„ธ์š”. ์‹œ๊ฐ„์ด ํ•ญ์ƒ ํฌํ•จ๋œ๋‹ค๋ฉด ์‹œ๊ฐ„ ๋จผ์ €์ธ ์ธ๋ฑ์Šค ์ „๋žต์ด ๊ธฐ๋ณธ์„ ์ด ๋ฉ๋‹ˆ๋‹ค.
  • ๋ณด์กด ๊ทœ์น™์„ ํŒŒํ‹ฐ์…˜ ๊ฒฝ๊ณ„์— ๋งž์ถ”์„ธ์š”(์˜ˆ: 13๊ฐœ์›” ๋ณด๊ด€ ํ›„ ๋“œ๋กญ).

AppMaster(appmaster.io)๋กœ ๋‚ด๋ถ€ ๊ด€๋ฆฌ์ž ํŒจ๋„์„ ๋งŒ๋“ ๋‹ค๋ฉด ์ด๋Ÿฐ ๊ฐ€์ •์„ ์ผ์ฐ ๋ชจ๋ธ๋งํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์น˜ ์žˆ์Šต๋‹ˆ๋‹ค: ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ฅผ ๋‹จ์ˆœํ•œ UI ์„ ํƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์ผ๋ถ€๋กœ ์ทจ๊ธ‰ํ•˜์„ธ์š”. ์ด ์ž‘์€ ๊ฒฐ์ •์ด ๋กœ๊ทธ ๋ณผ๋ฅจ์ด ์ปค์งˆ ๋•Œ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

์–ธ์ œ PostgreSQL ํŒŒํ‹ฐ์…”๋‹์ด ์ด๋ฒคํŠธ/๊ฐ์‚ฌ ํ…Œ์ด๋ธ”์— ์‹ค์งˆ์ ์œผ๋กœ ๋„์›€์ด ๋˜๋‚˜์š”?

ํŒŒํ‹ฐ์…”๋‹์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ผ๋ฐ˜ ์ฟผ๋ฆฌ๊ฐ€ ์‹œ๊ฐ„ ๋ฒ”์œ„๋กœ ์ œํ•œ๋˜๋Š” ๊ฒฝ์šฐ(์˜ˆ: "์ตœ๊ทผ 24์‹œ๊ฐ„", "์ง€๋‚œ 7์ผ")์™€ ํ…Œ์ด๋ธ”์ด ์ปค์ ธ ์ธ๋ฑ์Šค๋‚˜ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋ถ€๋‹ด์ด ๋  ๋•Œ ๊ฐ€์žฅ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ฃผ์š” ์ฟผ๋ฆฌ๊ฐ€ "์‚ฌ์šฉ์ž X์˜ ์ „์ฒด ๊ธฐ๋ก"์ฒ˜๋Ÿผ ์‹œ๊ฐ„ ์ œํ•œ์ด ์—†๋‹ค๋ฉด, UI์—์„œ ์‹œ๊ฐ„ ํ•„ํ„ฐ๋ฅผ ๊ฐ•์ œํ•˜๊ณ  ๊ฐ ํŒŒํ‹ฐ์…˜์— ์ ์ ˆํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ํ•œ ํŒŒํ‹ฐ์…”๋‹์€ ์˜คํžˆ๋ ค ๊ด€๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ ๋ฐ ๊ฐ์‚ฌ ๋ฐ์ดํ„ฐ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ํŒŒํ‹ฐ์…”๋‹ ๋ฐฉ์‹์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋กœ๊ทธ์™€ ๊ฐ์‚ฌ ๋ฐ์ดํ„ฐ์—๋Š” ๋ณดํ†ต ์‹œ๊ฐ„ ๋‹จ์œ„ ๋ฒ”์œ„ ํŒŒํ‹ฐ์…”๋‹(range by time)์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์‹œ๊ฐ„์ˆœ์œผ๋กœ ๋“ค์–ด์˜ค๊ณ , ์ฟผ๋ฆฌ๊ฐ€ ์‹œ๊ฐ„ ์ฐฝ์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉฐ, ๋ณด์กด์ด ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฆฌ์ŠคํŠธ(list)๋‚˜ ํ•ด์‹œ(hash) ํŒŒํ‹ฐ์…”๋‹์€ ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์œ ์šฉํ•˜๋ฉฐ, ๊ฐ์‚ฌ ์›Œํฌํ”Œ๋กœ์—์„œ๋Š” ๋ณด์กด๊ณผ ํƒ์ƒ‰์„ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ…Œ์ด๋ธ”์— ์ ์ ˆํ•œ ํŒŒํ‹ฐ์…˜ ํ‚ค๋Š” ์–ด๋–ป๊ฒŒ ์„ ํƒํ•˜๋‚˜์š”?

์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์žฅ ๋จผ์ €, ๊ฑฐ์˜ ํ•ญ์ƒ ์‚ฌ์šฉํ•˜๋Š” ํ•„๋“œ๋ฅผ ์„ ํƒํ•˜์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ๊ด€๋ฆฌ์ž ํŒจ๋„์—์„œ๋Š” ์‹œ๊ฐ„ ๋ฒ”์œ„ ํ•„ํ„ฐ๊ฐ€ ์ฒซ ๋ฒˆ์งธ์ด๋ฏ€๋กœ ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ํŒŒํ‹ฐ์…”๋‹์ด ๊ฐ€์žฅ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ํฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์žฅ๊ธฐ์ ์ธ ์•ฝ์†์œผ๋กœ ๊ฐ„์ฃผํ•˜์„ธ์š”.

์™œ `user_id`๋กœ ํŒŒํ‹ฐ์…”๋‹ํ•˜๋Š” ๊ฒƒ์€ ๋ณดํ†ต ๋‚˜์œ ์ƒ๊ฐ์ธ๊ฐ€์š”?

ํƒ€์ž„์Šคํƒฌํ”„๋‚˜ ํ…Œ๋„ŒํŠธ ์‹๋ณ„์ž์ฒ˜๋Ÿผ ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ๊ฐ’๋งŒ ์‚ฌ์šฉํ•˜์„ธ์š”. user_id ๊ฐ™์€ ๋†’์€ ์นด๋””๋„๋ฆฌํ‹ฐ ํ‚ค๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด ์ฟผ๋ฆฌ ํ”Œ๋ž˜๋‹ ์˜ค๋ฒ„ํ—ค๋“œ์™€ ์šด์˜ ๋ณต์žก์„ฑ์ด ์ปค์ง€๋ฏ€๋กœ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

`created_at`์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹ํ•ด์•ผ ํ•˜๋‚˜์š”, ์•„๋‹ˆ๋ฉด `occurred_at`์œผ๋กœ ํ•ด์•ผ ํ•˜๋‚˜์š”?

created_at๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ธฐ๋ก๋œ ์‹œ๊ฐ„์ด๊ณ , occurred_at์€ ์ด๋ฒคํŠธ๊ฐ€ ์‹ค์ œ๋กœ ๋ฐœ์ƒํ•œ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์ง€์—ฐ๋œ ์ˆ˜์‹ (์˜คํ”„๋ผ์ธ ํด๋ผ์ด์–ธํŠธ, ์žฌ์‹œ๋„, ํ)์ด ๋นˆ๋ฒˆํ•˜๋‹ค๋ฉด ์šด์˜์  ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด created_at์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹ํ•˜๊ณ  occurred_at์„ ํ•„ํ„ฐ์šฉ ์ธ๋ฑ์Šค๋กœ ๋‘๋Š” ๊ฒƒ์ด ๋” ์‹ค์šฉ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์ด๋ฒคํŠธ ์‹œ๊ฐ„์ด ์‹ ๋ขฐํ•  ๋งŒํ•˜๋ฉด occurred_at์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹ํ•˜๋Š” ๊ฒƒ์ด ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ๋” ์ž์—ฐ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ํŒ€์€ created_at์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹ํ•˜๊ณ  occurred_at์„ ์ƒ‰์ธํ•˜๋Š” ์ ˆ์ถฉ์•ˆ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ฆฌ์ž UI์—์„œ ์‹œ๊ฐ„ ๋ฒ”์œ„ ํ•„ํ„ฐ๋ฅผ ๋ฐ˜๋“œ์‹œ ์š”๊ตฌํ•ด์•ผ ํ•˜๋‚˜์š”?

๋„ค. ํ…Œ์ด๋ธ”์„ ํŒŒํ‹ฐ์…”๋‹ํ•œ ๊ฒฝ์šฐ ๊ด€๋ฆฌ์ž UI์—์„œ ์‹œ๊ฐ„ ๋ฒ”์œ„๋ฅผ ํ•„์ˆ˜๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ํ•„ํ„ฐ๊ฐ€ ์—†์œผ๋ฉด PostgreSQL์ด ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์„ ํ™•์ธํ•ด์•ผ ํ•ด์„œ ๊ฒฐ๊ณผ๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์„ "์ตœ๊ทผ 24์‹œ๊ฐ„" ๊ฐ™์€ ๊ฐ’์œผ๋กœ ๋‘๊ณ , "์ „์ฒด ๊ธฐ๊ฐ„"์€ ์˜๋„์ ์ธ ์„ ํƒ์œผ๋กœ ๋งŒ๋“ค์–ด ๋А๋ฆฐ ์ฟผ๋ฆฌ์ž„์„ ์•Œ๋ฆฌ๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ์—์„œ ๋ฌด์—‡์ด ํŒŒํ‹ฐ์…˜ ํ”„๋ฃจ๋‹์„ ๊นจ๋œจ๋ฆด ์ˆ˜ ์žˆ๋‚˜์š”?

์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์‹ค์ˆ˜๋Š” ํŒŒํ‹ฐ์…˜ ํ‚ค์— ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜(์˜ˆ: ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ date๋กœ ์บ์ŠคํŒ…) ํŒŒํ‹ฐ์…˜ ํ‚ค์™€ ๋‹ค๋ฅธ ์‹œ๊ฐ„ ์ปฌ๋Ÿผ์œผ๋กœ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํŒจํ„ด์€ ํŒŒํ‹ฐ์…˜ ํ”„๋ฃจ๋‹์„ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค. created_at BETWEEN X AND Y ๊ฐ™์€ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ๋กœ WHERE ์ ˆ์„ ์œ ์ง€ํ•˜๋ฉด ํ”„๋ฃจ๋‹์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒํ‹ฐ์…”๋‹๋œ ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”์— ๊ฐ€์žฅ ์ข‹์€ ํŽ˜์ด์ง• ๋ฐฉ์‹์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋กœ๊ทธ ๋ทฐ์— ๋Œ€ํ•ด ๊นŠ์€ OFFSET ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•์€ ์—ฌ์ „ํžˆ ๋А๋ฆฝ๋‹ˆ๋‹ค. ๋Œ€์‹  ์ปค์„œํ˜• ํŽ˜์ด์ง•์„ ์‚ฌ์šฉํ•˜์„ธ์š”(์˜ˆ: (timestamp, id) ๊ธฐ์ค€์œผ๋กœ "์ด์ „ ์ด๋ฒคํŠธ ๋” ๋ถˆ๋Ÿฌ์˜ค๊ธฐ"). ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์„ฑ๋Šฅ์„ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒํ‹ฐ์…”๋‹์ด ๊ณ ์œ  ์ œ์•ฝ๊ณผ ID์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋‚˜์š”?

PostgreSQL์—์„œ๋Š” ํŒŒํ‹ฐ์…”๋‹๋œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ผ๋ถ€ ๊ณ ์œ  ์ œ์•ฝ์€ ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ํฌํ•จํ•ด์•ผ ์ „์ฒด ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•ด ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ „์—ญ ๊ณ ์œ  id ์ œ์•ฝ์„ ๊ธฐ๋Œ€ํ•˜๋ฉด ๋†€๋ž„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค๋ฌด์  ํŒจํ„ด์€ ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ํฌํ•จํ•œ ๋ณตํ•ฉ ๊ณ ์œ ์ œ์•ฝ(์˜ˆ: (created_at, id))์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์™ธ๋ถ€์šฉ ๊ณ ์œ  ์‹๋ณ„์ž๊ฐ€ ํ•„์š”ํ•˜๋ฉด UUID๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ „์—ญ ๊ณ ์œ ์„ฑ์„ ์•ฑ ๋ ˆ์ด์–ด์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”์„ ํŒŒํ‹ฐ์…”๋‹ํ•œ ํ›„ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋ณด์กด ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

ํŒŒํ‹ฐ์…˜์„ ๋“œ๋กญํ•˜๋Š” ๊ฒƒ์ด ๋น ๋ฅด๊ณ  ๋Œ€๋Ÿ‰ DELETE๊ฐ€ ๋งŒ๋“œ๋Š” ๋ถ€ํ•˜์™€ VACUUM ์ž‘์—…์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ ๋ณด์กด ๊ทœ์น™์„ ํŒŒํ‹ฐ์…˜ ๊ฒฝ๊ณ„์— ๋งž์ถฐ ์ •ํ•˜๊ณ  ์ด๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค: ๋ฏธ๋ž˜ ํŒŒํ‹ฐ์…˜์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค๊ณ  ๋งŒ๋ฃŒ๋œ ํŒŒํ‹ฐ์…˜์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ œ๊ฑฐํ•˜์„ธ์š”. ์ž๋™ํ™”๊ฐ€ ์—†์œผ๋ฉด ํŒŒํ‹ฐ์…”๋‹์ด ์ˆ˜๋™ ์—…๋ฌด๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค.

์‰ฌ์šด ์‹œ์ž‘
๋ฉ‹์ง„๋งŒ๋“ค๊ธฐ

๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋กœ AppMaster๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.
์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ ์ ˆํ•œ ๊ตฌ๋…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค
๊ฐ์‚ฌ ๋กœ๊ทธ์˜ ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”์„ ์œ„ํ•œ PostgreSQL ํŒŒํ‹ฐ์…”๋‹ | AppMaster