๐ก ์ด ๊ธ์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ ๋ ์ด๋ค ๊ณ ๋ฏผ์ ํ๋์ง ์ ์๊ฒ๋๋ค. (๋งค์ฐ ๋ถ์กฑํฉ๋๋ค.) ํ๋ฆด์๋ ์์ผ๋ฉฐ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์ ์๋ ์์ต๋๋ค.
2์ฅ. ์ธ๋ฑ์ค - ์ธ๋ฑ์ค ๊ตฌ์กฐ ๋ฐ ํ์
2์ฅ. ์ธ๋ฑ์ค - ์ธ๋ฑ์ค ๊ตฌ์กฐ ๋ฐ ํ์
๐ก ํต์ฌ ์๋ฆฌ๋ฅผ ์์๋ณด์ ์ธ๋ฑ์ค ํ๋์ ๋ ๊ฐ์ง ํต์ฌ ์์ ์ธ๋ฑ์ค ์ค์บ ํจ์จํ ํ๋ ๋๋ค ์ก์ธ์ค ์ต์ํ ํ๋(ํ ์ด๋ธ ์ก์ธ์ค ํ์๋ฅผ ์ค์ด๋ ๊ฒ) ⇒ ์ด๊ฒ์ด ์ค์!! ์ธ๋ฑ์ค ๊ตฌ์กฐ ๋์ฉ๋ ํ ์ด๋ธ์
balldev.tistory.com
- ์น์ ํ sql ํ๋ ์ฑ ์ ๋ณด๊ณ ๋๋ฆ๋๋ก์ ์๊ฐ์ผ๋ก ์ ์ฉ
- ๋ถํํ ์คํธํ๋ฉฐ ์ฑํ ๋ฐ์ดํฐ๊ฐ ๋ง์ ์ง ๊ฒฝ์ฐ ์ธ๋ฑ์ค ์ ์ฉํ์ง ์์์ ๊ฒฝ์ฐ 1 ~ 2์ด์ ์๊ฐ์ด ๋์ค๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒจ ํ๋ํ ๋ด์ฉ์ ๋๋ค.
๊ธฐ๋ณธ์ ์ธ DB ๊ตฌ์กฐ
๋ญ๊ฐ ๋ง๊ธดํ๋ฐ ๋์ถฉ broadcast ๊ธฐ์ค์ผ๋ก ์ด๊ฒ์ ๊ฒ ์๋ ๊ตฌ์กฐ์ ๋๋ค.
๊ณ ๋ คํ๋ ๋ถ๋ถ
- ์กฐํ๋ฅผ ํ ๊ฒฝ์ฐ์ ์ด๋ค ์กฐ๊ฑด์ ์ ๋ง์ด ์ธ๊น??
- = ์กฐ๊ฑด ์์ฃผ๋ก
- 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 ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด์
- broadcast_state + broadcast_start_date + broadcast_end_date
- 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๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- 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
- ⇒ 3๋ฒ ์ธ๋ฑ์ค๋ก๋ง ํ์ค ์์๋๋ฐ ์ตํฐ๋ง์ด์ ๊ฐ 3, 1๋ฒ์ ๊ฑธ์ด๋ฒ๋ฆฐ๋ค. ๊ทผ๋ฐ ๋ก์ฐ์๋ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ์์ด๋ณด์ด๊ธดํฉ๋๋ค.
- ์ด์์ ํ๊ณ ์๋๋ฐ ์ฌ์ฉ์๊ฐ ๋์์ ์์ ์ต๋ 1400, ๋์ ์์ฒญ์ ์ 11๋ง๋ช ์ด๊ณ ๋ถํํ ์คํธ๋ 10000 - 50000๊น์ง ํด๋ดค๋๋ฐ ์์ง ์ฌ๋ก์ฐ ์ฟผ๋ฆฌ๊ฐ ๋์ค์ง ์์์ต๋๋ค. ํ์ง๋ง ์ด์ฉ์ ์๊ฐ ๊ธ๊ฒฉํ๊ฒ ๋์ด๋๋ค๋ฉด ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
- ์ฌ์๊ฐ ์์ด ์ ํ๊ฑด์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
'๊ฒฝํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฉด์ ์์ ๋์น ๊ฒ๋ค - ๋ก๊ทธ ๊ด๋ฆฌ์ ๋ชจ๋ํฐ๋ง์ ๋ํ ์์ฌ์ด ๋๋ต (0) | 2025.09.26 |
---|---|
ํ์ผ ๋ง์ด๊ทธ๋ ์ด์ (0) | 2024.05.19 |
redis pub / sub ์ํคํ ์ฒ (0) | 2023.04.23 |
๋์์ธ ํจํด ์ ์ฉ (0) | 2023.04.20 |
์ก์ถ ์๋ฒ์ ์ ํ๋ธ ์คํธ๋ฆฌ๋ฐ (0) | 2023.04.11 |