์ฟผ๋ฆฌ ๊ณํ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ญ์ ํ์์ ์ด๊ณ ํ์์ ์ธ ๊ตฌ์ฑ ์์์ ๋๋ค. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS)์ ๋งฅ๋ฝ์์ ์ฟผ๋ฆฌ ๊ณํ์ ํจ์จ์ ์ผ๋ก ์ก์ธ์ค, ๊ฒ์ ๋ฐ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)์์ ์ ์ฉํ ์์ ๊ณผ ๊ธฐ์ ์ ๊ณ์ธต์ ์ด๊ณ ์ต์ ํํ์ฌ ํํํ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฃผ์ด์ง ์ฟผ๋ฆฌ์์ ์์ฒญํ ํ์ ๋ฐ์ดํฐ.
์ฟผ๋ฆฌ ๊ณํ์ ์ ์ถ๋ SQL(๊ตฌ์กฐ์ ์ฟผ๋ฆฌ ์ธ์ด) ๋ช ๋ น์ ๋ํ ์๋ต์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์ด๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํ๊ธฐ ์ํด ๋ณดํธ์ ์ผ๋ก ํ์ฉ๋๋ ์ธ์ด์ ๋๋ค. ์ฟผ๋ฆฌ ๊ณํ์ ์ ์ฌ์ ์ธ ํ๋ณด ๊ณํ ์งํฉ์์ ๊ฐ์ฅ ํจ์จ์ ์ธ ์ฟผ๋ฆฌ ๊ณํ์ ๊ตฌ์ถ, ํ๊ฐ ๋ฐ ์ ํํ๋ RDBMS์ ๊ตฌ์ฑ ์์์ธ ์ฟผ๋ฆฌ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ์ ํ์ ๋๋ค. ์ฟผ๋ฆฌ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํด๋ฆฌ์คํฑ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ ์คํ์ ํ์ํ ๋ฆฌ์์ค ์๋น์ ์๊ฐ์ ์ต์ํํ๋ ๋์์ ์๋ ์ ํ๋๋ฅผ ์ต๋ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
์ต์ ์ ์ฟผ๋ฆฌ ๊ณํ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ฟผ๋ฆฌ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ๋ค์ํ ์์๋ฅผ ๊ณ ๋ คํฉ๋๋ค. ์ฒซ์งธ, ๋ฐ์ดํฐ์ ๋ถํฌ ๋ฐ ์นด๋๋๋ฆฌํฐ, ์ฟผ๋ฆฌ๋๋ ํ ์ด๋ธ์ ํฌ๊ธฐ, ํด๋น ํ ์ด๋ธ์ ์กด์ฌํ๋ ์ธ๋ฑ์ค์ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํต๊ณ๋ฅผ ํ์ฉํฉ๋๋ค. ์ฟผ๋ฆฌ ์คํ ์ฑ๋ฅ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ, CPU ์ฌ์ฉ๋, I/O ๋์ญํญ๊ณผ ๊ฐ์ ํ๋์จ์ด ๋งค๊ฐ๋ณ์์ ์ํฅ๋ ๋ฐ์ต๋๋ค. ๋ํ ์ฟผ๋ฆฌ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ๋น์ฉ ์ถ์ ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ์๋น ์ธก๋ฉด์์ ๊ฐ์ฅ ์ ๋ ดํ ๊ณํ์ ๊ฒฐ์ ํฉ๋๋ค. ์ด๋ฌํ ์ถ์ ์น๋ CPU ์ฃผ๊ธฐ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, I/O ์์ ๋ฐ ์์คํ ์ ์ฌ๋ฌ ๋ถ๋ถ ๊ฐ ํต์ ์ค๋ฒํค๋์ ์ ์ฌ์ ๋น์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
์ฟผ๋ฆฌ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ๋ค๋จ๊ณ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ์ ์ฟผ๋ฆฌ ๊ณํ์ ์๋ณํฉ๋๋ค. ํ๋ก์ธ์ค๋ SQL ์ฟผ๋ฆฌ์ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐ ๊ตฌ๋ฌธ ๋ถ์์ผ๋ก ์์๋๋ฉฐ, ์ฟผ๋ฆฌ์ ์ ํ์ฑ์ ํ์ธํ๊ธฐ ์ํ ์๋ฏธ ๋ถ์์ด ์ด์ด์ง๋๋ค. ๋ค์์ผ๋ก, ์ต์ ํ ํ๋ก๊ทธ๋จ์ ์กฐ๊ฑด์ ํธ์๋ค์ด, ์กฐ์ธ ์ฌ์ ๋ ฌ, ์กฐ์ธ ๋ฐฉ๋ฒ ์ ํ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ ์ต์ ํ์ ๊ฐ์ ๋ค์ํ ๋ณํ ๋ฐ ์ต์ ํ ๊ธฐ์ ์ ์ ์ฉํ์ฌ ์ผ๋ จ์ ํ๋ณด ์ฟผ๋ฆฌ ๊ณํ ๋์์ ์์ฑํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ์์ ๋น์ฉ์ ๊ธฐ์ค์ผ๋ก ์ด๋ฌํ ๋์์ ํ๊ฐํ๊ณ DBMS์์ ์คํํ ์ต์์ ์ฟผ๋ฆฌ ๊ณํ ํ๋ณด๋ฅผ ์ ํํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ ํ ์ด๋ธ์ ์กฐ์ธํ๊ณ ์ ํ๋ณ ํ๋งค๋์ ์ง๊ณํ์ฌ "products" ๋ฐ "sales" ํ ์ด๋ธ์์ ์ ํ์ ์ด๋ฆ๊ณผ ์ด ํ๋งค๋์ ๊ฒ์ํ๋ ๊ฐ๋จํ SQL ์ฟผ๋ฆฌ๋ฅผ ์๊ฐํด ๋ณด์ธ์.
p.product_name, SUM(s.sales_amount)์ total_sales๋ก ์ ํํ์ธ์.
์ ํ p์์
JOIN ํ๋งค s ON p.product_id = s.product_id
GROUP BY p.์ ํ_์ด๋ฆ
์ฟผ๋ฆฌ ์ต์ ํ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ ์กฐ์ธ ๋ฐฉ๋ฒ(์: ์ค์ฒฉ ๋ฃจํ ์กฐ์ธ, ํด์ ์กฐ์ธ ๋๋ ๋ณํฉ ์กฐ์ธ), ํ ์ด๋ธ์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ(์: ์์ฐจ ์ค์บ, ์ธ๋ฑ์ค ์ค์บ), ํ ์ด๋ธ ์กฐ์ธ ์์. ์ ํํ ์ฟผ๋ฆฌ ๊ณํ์๋ "product_id" ์ด์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ "products" ํ ์ด๋ธ์ ์ค์บํ๊ณ , "sales" ํ ์ด๋ธ๊ณผ ํด์ ์กฐ์ธ์ ์ํํ ๋ค์, ๊ฒฐ๊ณผ ํํ์ ํด์ ๊ธฐ๋ฐ ์ง๊ณ๋ฅผ ์ ์ฉํ์ฌ ์ด ๋งค์ถ์ ๊ณ์ฐํ๋ ์์ ์ด ํฌํจ๋ ์ ์์ต๋๋ค. ์ ํ๋ณ.
AppMasterno-code ํ๋ซํผ์ ๋งฅ๋ฝ์์ ์ฟผ๋ฆฌ ๊ณํ์ ์๋ ์์ฑ, ์ต์ ํ ๋ฐ ์คํ์ ํ๋ซํผ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค, ๋ก์ง ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ณ์ธต ๊ฐ์ ์ํํ ํตํฉ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ ๊ด๊ณํ ๋ฐ์ดํฐ์ ํจ์จ์ ์ธ ๊ฒ์ ๋ฐ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐ. AppMaster PostgreSQL๊ณผ ๊ฐ์ ๊ธฐ๋ณธ RDBMS๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ ๊ณํ ๋ฐ ์ต์ ํ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํด ํ๋ซํผ์์ Go, Vue3, Kotlin ๋ฐ Jetpack Compose ์ฌ์ฉํ๋ฉด ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ๋ฐ ๊ธฐ์ ๊ณผ์ ํธํ์ฑ์ด ๋ณด์ฅ๋์ด ๊ณ ๊ฐ์๊ฒ ๊ท๋ชจ์ ๊ด๊ณ์์ด ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ฉฐ ๋น์ฉ ํจ๊ณผ์ ์ธ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ค์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋๋ฉ์ธ.
์์ฝํ์๋ฉด, ์ฟผ๋ฆฌ ๊ณํ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋งฅ๋ฝ์์ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ฒ์ ๋ฐ ์ฒ๋ฆฌ ์์ ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์์ ๋๋ค. ์ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๋ํ ์๊ตฌ๊ฐ ๊ณ์ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ธ์ฌํ๊ณ ๋ฅ์ํ ๋ฐฉ์์ผ๋ก ์ฟผ๋ฆฌ ๊ณํ ๋ฐ ์ต์ ํ ํ๋ก์ธ์ค๋ฅผ ์ํํ๋ ๊ฒ์ ์ค์์ฑ์ ์๋ฌด๋ฆฌ ๊ฐ์กฐํด๋ ์ง๋์น์ง ์์ต๋๋ค. ์ ์ค๊ณ๋ ์ฟผ๋ฆฌ ๊ณํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ํฅ์์ผ๋ก ์ด์ด์ง ๋ฟ๋ง ์๋๋ผ ๋ณด๋ค ํจ๊ณผ์ ์ธ ๋ฆฌ์์ค ํ์ฉ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ๊ถ๊ทน์ ์ผ๋ก AppMaster ์ ๊ฐ์ ๊ธฐ์ ํ๋ซํผ์ ์ ๋ฐ์ ์ธ ์ฑ๊ณต๊ณผ ๊ฐ์น ์ ์์ ๊ธฐ์ฌํฉ๋๋ค.