๊ฒฝํ—˜

์ธ๋ฑ์Šค ๊ณ ๋ฏผ

ballde 2023. 3. 30. 22:51

๐Ÿ’ก ์ด ๊ธ€์€ ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•  ๋•Œ ์–ด๋–ค ๊ณ ๋ฏผ์„ ํ–ˆ๋Š”์ง€ ์ ์€๊ฒ๋‹ˆ๋‹ค. (๋งค์šฐ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.) ํ‹€๋ฆด์ˆ˜๋„ ์žˆ์œผ๋ฉฐ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

2์žฅ. ์ธ๋ฑ์Šค - ์ธ๋ฑ์Šค ๊ตฌ์กฐ ๋ฐ ํƒ์ƒ‰

 

2์žฅ. ์ธ๋ฑ์Šค - ์ธ๋ฑ์Šค ๊ตฌ์กฐ ๋ฐ ํƒ์ƒ‰

๐Ÿ’ก ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ์•Œ์•„๋ณด์ž ์ธ๋ฑ์Šค ํŠœ๋‹์˜ ๋‘ ๊ฐ€์ง€ ํ•ต์‹ฌ ์š”์†Œ ์ธ๋ฑ์Šค ์Šค์บ” ํšจ์œจํ™” ํŠœ๋‹ ๋žœ๋ค ์•ก์„ธ์Šค ์ตœ์†Œํ™” ํŠœ๋‹(ํ…Œ์ด๋ธ” ์•ก์„ธ์Šค ํšŸ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ) ⇒ ์ด๊ฒƒ์ด ์ค‘์š”!! ์ธ๋ฑ์Šค ๊ตฌ์กฐ ๋Œ€์šฉ๋Ÿ‰ ํ…Œ์ด๋ธ”์—

balldev.tistory.com

  • ์นœ์ ˆํ•œ sql ํŠœ๋‹ ์ฑ…์„ ๋ณด๊ณ  ๋‚˜๋ฆ„๋Œ€๋กœ์˜ ์ƒ๊ฐ์œผ๋กœ ์ ์šฉ
  • ๋ถ€ํ•˜ํ…Œ์ŠคํŠธํ•˜๋ฉฐ ์ฑ„ํŒ… ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„ ์งˆ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ์ ์šฉํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ 1 ~ 2์ดˆ์˜ ์‹œ๊ฐ„์ด ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒจ ํŠœ๋‹ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์ธ DB ๊ตฌ์กฐ


๋ญ”๊ฐ€ ๋งŽ๊ธดํ•œ๋ฐ ๋Œ€์ถฉ broadcast ๊ธฐ์ค€์œผ๋กœ ์ด๊ฒƒ์ €๊ฒƒ ์žˆ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

๊ณ ๋ คํ–ˆ๋˜ ๋ถ€๋ถ„


  1. ์กฐํšŒ๋ฅผ ํ•  ๊ฒฝ์šฐ์— ์–ด๋–ค ์กฐ๊ฑด์ ˆ์„ ๋งŽ์ด ์“ธ๊นŒ??
  2. = ์กฐ๊ฑด ์œ„์ฃผ๋กœ
  3. broadcast_state๋Š” ready, broadcasting, vod, end ์ด๋ ‡๊ฒŒ ์žˆ๋Š”๋ฐ ๋ฐฉ์†ก์ด ์Œ“์ด๋‹ค ๋ณด๋ฉด vod๊ฐ€ ์••๋„์ ์œผ๋กœ ๋งŽ์Œ(end๋Š” soft delete ์ฒ˜๋ฆฌ)

SQL


๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์–ด๋А์ •๋„ ์™„์„ฑํ•˜๊ณ  ์ธ๋ฑ์Šค๋ฅผ ๊ฑธ์—ˆ์Šต๋‹ˆ๋‹ค.

broadcast

analyze
select *
from broadcast broadcast0_
where (broadcast0_.broadcast_state in (2, 3))
  and broadcast0_.broadcast_start_date >= '๋‚ ์งœ'
  and broadcast0_.broadcast_end_date <= '๋‚ ์งœ'
  and (broadcast0_.delete_date is null)
;
analyze
select *
from broadcast broadcast0_
where (broadcast0_.broadcast_state in (2, 3))
  and broadcast0_.broadcast_start_date >= '๋‚ ์งœ'
  and broadcast0_.broadcast_end_date <= '๋‚ ์งœ'
  and broadcast0_.category_id = 1
  and (broadcast0_.delete_date is null)

์กฐ์ธ ๊ฑธ๋•Œ๋„ ๊ฒฐ๊ตญ left ์ชฝ์ด ํ•„ํ„ฐ๋ง ๋˜๊ณ  ๊ทธ ๋กœ์šฐ๋งˆ๋‹ค ํƒ์ƒ‰ํ•˜๋Š” ๊ณผ์ •์ด๊ธฐ ๋–„๋ฌธ์— ์กฐ์ธ์ด ๊ฑธ๋ ค์žˆ์—ˆ๋Š”๋ฐ ๊ฑ ์ค„์—ฌ๋ดค์Šต๋‹ˆ๋‹ค.

  • broadcast_state + broadcast_start_date + broadcast_end_date
  • broadcast_state + broadcast_start_date + broadcast_end_date + category

์ด ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ๋‚˜์˜จ๋‹ค.

analyze
select *
from broadcast
left outer join category c on broadcast.category_id = c.id
where category_id = 1

ํ•˜์ง€๋งŒ category_id๋ฅผ ํ†ตํ•ด์„œ join ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์„œ

  1. broadcast_state + broadcast_start_date + broadcast_end_date
  2. category_id
analyze
select *
from broadcast broadcast0_
where store_id = 7
and broadcast_state = 1

store_id๋กœ ์กฐํšŒํ•˜๋Š” ๋ถ€๋ถ„๋„ ์žˆ์Œ

3. store_id + broadcast_state

⇒ ์ด๋ ‡๊ฒŒ 1, 2, 3 ์ธ๋ฑ์Šค๋ฅผ ๋’€๋‹ค. (์ฃผ๋กœ ๋‹จ์ผ ์กฐํšŒ?๋Š” id, stream_key๋กœ ํ•˜๊ณ  ๋ฆฌ์ŠคํŠธ๋Š” ์œ„์ฒ˜๋Ÿผ ์ƒํƒœ, ๋‚ ์งœ or store_id, ์ƒํƒœ, ๋‚ ์งœ ์ด๋‹ค.)

chat


 

analyze
select *
from chat
where broadcast_id = 1740
and chat_date <= '2023-03-27'
analyze
select *
from chat
where broadcast_id = 1740
and pid <= 5

chat์„ ์กฐํšŒํ• ๋•Œ ๋ฌด์กฐ๊ฑด broasdcast_id ๊ธฐ์ค€์œผ๋กœ ๊ฑธ๊ณ  chat_date, pid๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. broadcast_id + chat_date

broadcast_id + pid ์ธ๋ฑ์Šค๋ฅผ ํ• ๊นŒ ํ–ˆ์ง€๋งŒ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ broadcast_id + pid๋ฅผ ์•ˆ์žก์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒ๋Œ€์ ์œผ๋กœ ์ฝœ์„ ์ ๊ฒŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. (๊ทธ๋ž˜๋„ ํ–ˆ์–ด์•ผํ•˜๋‚˜? ์‹ถ์Šต๋‹ˆ๋‹ค.. ๊ทธ๋ฆฌ๊ณ  ํžŒํŠธ๋ฅผ ์จ์•ผํ•˜๋‚˜?)

broadcast๋งŒ ์ธ๋ฑ์Šค ๊ฑธ์—ˆ์„ ๊ฒฝ์šฐ

broadcast + chat_date๋กœ ์ธ๋ฑ์Šค ๊ฑธ์—ˆ์„ ๊ฒฝ์šฐ

์ฃผ์˜์ 

analyze
select *
from broadcast broadcast0_
where store_id = 7
and broadcast_state = 1
  1. ⇒ 3๋ฒˆ ์ธ๋ฑ์Šค๋กœ๋งŒ ํƒˆ์ค„ ์•Œ์•˜๋Š”๋ฐ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ 3, 1๋ฒˆ์„ ๊ฑธ์–ด๋ฒ„๋ฆฐ๋‹ค. ๊ทผ๋ฐ ๋กœ์šฐ์ˆ˜๋Š” ํฌ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์—†์–ด๋ณด์ด๊ธดํ•ฉ๋‹ˆ๋‹ค.
  2. ์šด์˜์„ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์ ‘์†์ž ์ตœ๋Œ€ 1400, ๋ˆ„์  ์‹œ์ฒญ์ž ์ˆ˜ 11๋งŒ๋ช…์ด๊ณ  ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ๋„ 10000 - 50000๊นŒ์ง€ ํ•ด๋ดค๋Š”๋ฐ ์•„์ง ์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ๊ฐ€ ๋‚˜์˜ค์ง„ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์šฉ์ž ์ˆ˜๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋Š˜์–ด๋‚œ๋‹ค๋ฉด ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
  3. ์‚ฌ์ˆ˜๊ฐ€ ์—†์–ด ์ž˜ ํ•œ๊ฑด์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.