๊ฐ๋ฐ์์
NL ์กฐ์ธ์ ์๋ฆฌ
์กฐ์ํ๋์ ์น์ ํ SQL ํ๋์ ์ฝ๊ณ ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. NL ์กฐ์ธ์ Nested Loop ์กฐ์ธ์ ์ฝ์๋ก ์ค์ฒฉ ๋ฃจํ ๋ฌธ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์กฐ์ธ์ด ์ด๋ฃจ์ด์ง๋ค. ์ ๋ ํ ์ด๋ธ๋ฅผ ์ฌ์ ๋ฒํธ๋ก ์กฐ์ธํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํ๋ก๊ทธ๋๋ฐ ์์ผ๋ก ๋ก์ง์ ๊ตฌํํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์๋ค. for(int i=0;i= '19960101' AND e.๋ถ์์ฝ๋ = 'Z123' AND c.๊ด๋ฆฌ์ฌ์๋ฒํธ = e.์ฌ์๋ฒํธ AND c. ์ต์ข ์ฃผ๋ฌธ๊ธ์ก >= 20000 ์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์คํ ํ, ROWS | OPERATION 5 |NESTED LOOPS 3 |TABLE ACCESS BY INDEX ROWID OF ์ฌ์ 2780 | INDEX RANGE SCAN OF ์ฌ์_X1 5 | TABLE ACCESS BY INDE..
Chapter 7. ๊ฐ์ฒด ๋ถํด
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ํ๋ก์์ ์ถ์ํ์ ๊ธฐ๋ฅ ๋ถํด ๐ก ํ๋ก์์ ๋ ๋ฐ๋ณต์ ์ผ๋ก ์คํ๋๊ฑฐ๋ ๊ฑฐ์ ์ ์ฌํ๊ฒ ์คํ๋๋ ์์ ๋ค์ ํ๋์ ์ฅ์์ ๋ชจ์๋์์ผ๋ก์จ ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ณ ์ค๋ณต์ ๋ฐฉ์งํ ์ ์๋ ์ถ์ํ ๋ฐฉ๋ฒ์ด๋ค. ์ ํต์ ์ธ ๊ธฐ๋ฅ ๋ถํด ๋ฐฉ๋ฒ์ ์์คํ ์ ๊ตฌ์ฑํ๋ ์ต์์ ๊ธฐ๋ฅ์ ์ ์ํ๊ณ ์์ ๋จ๊ณ์ ํ์ ๊ธฐ๋ฅ์ผ๋ก ๋ถํดํด ๋๊ฐ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. ๐ก ์ธ๋ถํ๋ ๋ง์ง๋ง ํ์ ๊ธฐ๋ฅ์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๊ตฌํ๊ฐ๋ฅํ ์์ค์ด ๋ ๋๊น์ง ๊ณ์ ๋๋ค. ํํฅ์ ํ๋ก์์ ์ถ์ํ๋ฅผ ํตํด ๋ง๋ ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ์ด ๋๋ค. ์ต์์ ๊ธฐ๋ฅ(){ ์ธ๋ถ๊ธฐ๋ฅ1(); ์ธ๋ถ๊ธฐ๋ฅ2(); ์ธ๋ถ๊ธฐ๋ฅ3(); .. } ์ต์์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์ฌ๋ฌ๊ฐ์ ์ธ๋ถ๊ธฐ๋ฅ์ด ํธ์ถ๋์ด ์ํ๋ ์ต์์ ๊ธฐ๋ฅ์ ์..
Where ์กฐ๊ฑด ์ ์์ Between ๊ณผ Like
์กฐ์ํ๋์ ์น์ ํ SQL ํ๋์ ์ฝ๊ณ ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. Between ๊ณผ Like์ ์ค์บ ๋ฒ์ ์ฐจ์ด Between ๊ณผ Like ๋ ๋ฒ์ ๊ฒ์์ ํ ๋ ํ์ฉ๋ ์ ์๋๋ฐ, ์ธ๋ป ๋น์ทํด๋ณด์ด์ง๋ง ํจ์จ์ ์ธ ์ธก๋ฉด์์ ์ดํด๋ณด๋ฉด ๋ค๋ฅด๊ฒ ๋์ํ๋ค. ์๋ฅผ ๋ค์ด, ํ์ ํ ์ด๋ธ์ ์๋ ์ ์นผ๋ผ๊ณผ ํ์ ์นผ๋ผ์ด ์๊ณ [์๋ ์ + ํ์ ] ์ด ์ธ๋ฑ์ค๋ผ๊ณ ๊ฐ์ ํด๋ณด์. 1995๋ ์์ด๋ฉด์ ํ์ ์ด 'B'์ธ ๋ ์ฝ๋๋ค์ ๊ฒ์ํ๊ธฐ ์ํด์๋ 1๏ธโฃ Between ์ ๊ฒฝ์ฐ SELECT * FROM ํ์ WHERE ์๋ ์ BETWEEN "199501" AND "199512" AND ํ์ = 'B'; 2๏ธโฃ Like ์ ๊ฒฝ์ฐ SELECT * FROM ํ์ WHERE ์๋ ์ LIKE "1995%" AND ํ์ = 'B'; ์ ๊ฐ..
Where ์กฐ๊ฑด ์ ์์ Between ๊ณผ in ์ ์ฐจ์ด
์กฐ์ํ๋์ ์น์ ํ SQL ํ๋์ ์ฝ๊ณ ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. Between ๊ณผ In ์กฐ๊ฑด์ ์ ์ธ๋ฑ์ค ์ค์บ ๋ฒ์ ๋น๊ตํด๋ณด๊ธฐ ์์ ๊ฐ์ด, DEPTNO ์ JOB ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. SELECT * FROM TABLE WHERE DEPTNO BETWEEN 10 AND 30 AND JOB = 'B' ์์ ๊ฐ์ ์ฟผ๋ฆฌ๊ฐ ์คํ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น? ๋จผ์ , DEPTNO๊ฐ 10์ด๋ฉด์ JOB์ด 'B' ์ธ ๋ ์ฝ๋์์ ํ์์ ์์ํ์ฌ DEPTNO ๊ฐ 30์ด๋ฉด์ JOB์ด 'B'๊ฐ ์๋๊ฒ ๋๋ ๋ ์ฝ๋ ๊น์ง ํ์ํ ๊ฒ์ด๋ค. ์์ง์ ํ์์ ํ๋ฒ ์ด๋ฃจ์ด์ง์ง๋ง, ์ํ์ ํ์์ด ๋ง์ ๋ ์ฝ๋๋ฅผ ํ์ํ๊ฒ๋๋ค. ๋ฐ๋ฉด์, SELECT * FROM TABLE WHERE DEPTNO IN (10,20,30) AND..
Chapter 6. ๋ฉ์์ง์ ์ธํฐํ์ด์ค
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ๋ฉ์์ง์ ๋ฉ์๋ ๐ก ๋ฉ์์ง๋, ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์ ์ผํ๊ฒ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค. ์๋ฐ ๋ฌธ๋ฒ์ ์๋ก ๋ค๋ฉด ์๋์ ๊ฐ์ ๊ฒ์ด ๋ฉ์์ง ์ ์ก์ด๋ค. ์์ ์.์คํผ๋ ์ด์ ๋ช (์ธ์); [ ex. condition.isSatisfiedBy(screening) ] โ ๋ฉ์ธ์ง์ ๋ฉ์๋๋ ๊ทธ๋ฌ๋ฉด ๊ฐ์๊ฑฐ ์๋์ผ? ๋ง์ฝ, ์์ ์ ๊ฐ์ฒด๊ฐ ์ธํฐํ์ด์ค ํํ๊ฐ ์๋ ๊ตฌํ์ฒด๋ผ๋ฉด ๋ง๋ ๋ง์ด ๋ ์ ์๋ค. ํ์ง๋ง, ๐จ ์์ ์ ๊ฐ์ฒด๊ฐ ์ธํฐํ์ด์ค๋ก ์ ์๋์ด์๋ค๋ฉด, ํด๋น ๋ฉ์์ง๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ๋๋์ ๋ฐ๋ผ ์ค์ ์คํ๋๋ ํ๋ก์ธ์ค๊ฐ ๋ฌ๋ผ์ง๋ค. ๋ฐ๋ผ์, ๐ก ๋ฉ์๋๋ ์์ ์ ๊ฐ์ฒด๊ฐ ๋ฉ์์ง๋ฅผ ๋ฐ์, ์ค์ ๋ก ์คํ๋๋ ํ๋ก์ธ์ค(ํจ์)๋ฅผ ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ฉ์์ง๋ฅผ ์ ์กํ๋ ..
๋ฐฐ์น I/O์ ์ธ๋ฑ์ค๋ฅผ ๋ฏฟ๊ณ ์ฟผ๋ฆฌ์ ORDER BY๋ฅผ ์๋ตํ๋ฉด ์๋๋ ์ด์
์กฐ์ํ๋์ ์น์ ํ SQL ํ๋์ ์ฝ๊ณ ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์ธ๋ฑ์ค์ ๋นํจ์จ์ ์ธ ๋๋ค I/O ์์ธ์ค ์ธ๋ฑ์ค๋ ํฐ ํ ์ด๋ธ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ๋ ์ ์ฉํ๋ค๊ณ ๋ฐฐ์ ๋ค. ์ธ๋ฑ์ค๋ก ๋ ์ฝ๋์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ, ์ธ๋ฑ์ค์ ์ฐ๊ฒฐ๋ ํด๋น ๋ ์ฝ๋๊ฐ ์กด์ฌํ๋ ๋ธ๋ก ์ ๋ณด๋ฅผ ํตํด์ ๋ ์ฝ๋์ ์ ๊ทผํด์ผํ๊ธฐ ๋๋ฌธ์ ๋๋ค I/O ๋ก ์ ๊ทผํด์ผํ๊ณ ์ด ๋๋ค I/O๊ฐ ๋ง์์ง๋ฉด, ์ ์ฒด ํ ์ด๋ธ์ ํ ์ค์บํด์ ์ํ์ ์์ธ์ค๋ก ์ ๊ทผํ๋๊ฒ ๋น์ฉ์ด ๋ ์ ์ด์ง ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๐ก ์ด๋ฌํ ์ฑ๋ฅ ๋นํจ์จ์ ์ด๋์ ๋ ๊ฐ์์ํค๊ธฐ ์ํด, ์ด์ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๊ทผํ๋ ํ ์ด๋ธ ๋ธ๋ก ์ ๋ณด๋ฅผ ์ ์ฅํด๋์๋ค๊ฐ ์ผ์นํ๋ฉด ๋ฐ๋ก ์ ๊ทผํ๋ ์บ์ฑ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธดํ์ง๋ง ์ธ๋ฑ์ค๋ก ์ ๋ ฌ๋ ๋ ์ฝ๋๋ง๋ค ๋ค๋ฅธ ๋ธ๋ก์ ๊ฐ๋ฆฌํค๋ฉด ํจ๊ณผ๋ฅผ ๋ณด๊ธฐ ํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๊ทธ๋์ ๊ณ ์ํด๋ธ..
Chapter 5. ์ฑ ์ ํ ๋นํ๊ธฐ
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ์ฑ ์ ์ฃผ๋ ์ค๊ณ ๋ฐ์ดํฐ๋ฅผ ์ค์ฌ์ผ๋ก ์ค๊ณํ๊ฒ๋๋ฉด ์ ์ฐํ ์ค๊ณ๋ฅผ ํ๊ธฐ ํ๋ค๋ค. ์ ์ด์, '๋ฐ์ดํฐ' ๋ผ๋ ๊ฒ์ ๊ฐ์ฒด์ ๊ตฌ์ฒด์ ์ธ ์ ๋ณด์ด๊ณ , ์ด๋ ๊ตฌํ์ ํด๋นํ๋ค. ๋ฐ๋ผ์, ๋ฐ์ดํฐ ์ค์ฌ์ ์ค๊ณ๋ ๊ฐ์ฒด์ ๊ตฌํ๋ถ์ ์ด์ ์ ๋ง์ถ๊ณ ์ค๊ณ ํ๋ค๋ ์๋ฏธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ค์ ์ผ๋ก ๊ฐ์ฒด ๊ฐ ํ๋ ฅ์ ์๊ฐํ๊ฒ ๋๋ฉด ์ธ๋ถ ๊ฐ์ฒด์๊ฒ ์์ ์ ๋ฐ์ดํฐ ์ ๋ณด๋ฅผ ๋๊ฒจ์ฃผ๋ ๊ฒ์ด๋ฏ๋ก ์บก์ํ๋ฅผ ๋ฐฉํดํ๊ฒ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ๊ตฌํ์ ์ค์ ์ผ๋กํ ์ค๊ณ๋ ์บก์ํ๋ฅผ ์ ํดํ๊ณ ์์ง๋๋ ๋ฎ์ถ๊ณ ๊ฒฐํฉ๋๋ ๋์์ผ๋ก์ ๋ณํ์ ์ทจ์ฝํ ์ค๊ณ๊ฐ ๋๋ค. ๐ก ๋ฐ๋ผ์, ๊ฐ์ฒด ์งํฅ์ ํต์ฌ์ธ ํ๋ ฅ, ์ฑ ์, ์ญํ ์ค ๊ฐ์ฅ ์ค์ํ ์ฑ ์ ์ ์ค์ ์ผ๋ก ์ค๊ณํ๋ ๊ฒ์ด ์ ์ฐํ ์ค๊ณ๋ฅผ ํ ์ ์๊ฒ ํด์ค๋ค. [..
์ธ๋ฑ์ค ํ๋
์กฐ์ํ๋์ ์น์ ํ SQL ํ๋์ ์ฝ๊ณ ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ ์ฝ๋๋ฅผ ์ฐพ์๊ฐ๋ ๊ณผ์ ๋จผ์ , ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ ์ ์๋ ์ธ๋ฑ์ค ํ ์ด๋ธ์ด ์บ์ฑ๋์ด ์๋์ง ํ์ธํ๋ค. ์บ์ฑ๋์ด ์๋ค๋ฉด, ์ธ๋ฑ์ค ํ ์ด๋ธ์์ ์ธ๋ฑ์ค ์กฐ๊ฑด์ ๋ง๋ ๋ ์ฝ๋๋ฅผ ์ฐพ๋๋ค. ๊ทธ๋ฌ๋ฉด, ํด๋น ์กฐ๊ฑด์ ๋ง๋ ์ค์ ๋์คํฌ ์ ๋ ์ฝ๋์ ์์น ์ ๋ณด๋ฅผ ํ์ ํ ์ ์๋ค.(ROWID) ์ค์ ์ ๊ทผํด์ผํ๋ ๋์คํฌ ์ ๋ ์ฝ๋์ ์์น๋ ์ผ๋ฐ์ ์ผ๋ก ๋ธ๋ก์ผ๋ก ๊ด๋ฆฌํ๋ฏ๋ก, ํด๋น ๋ธ๋ก์ด ์ด๋ฏธ ๋ฒํผ์ ์บ์ฑ๋์ด ์๋์ง ํ์ธํ๊ณ ์๋ค๋ฉด ์บ์ฑ๋ ๋ธ๋ก์ ์ ๊ทผํด์ ๊ฐ์ ธ์จ๋ค. ๋ง์ฝ, ๊ทธ๋ ์ง ์๋ค๋ฉด ์ค์ ๋์คํฌ๋ก ์ ๊ทผํ๋ค. ๋ฒํผ์์๋ ํ ์ด๋ธ ๋ธ๋ก ์์น ๊ฐ์ ํด์ฑํ์ฌ ๊ณ ์ ํ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ ํ ๊ด๋ฆฌํ๋ค. ๊ทธ ๊ณผ์ ์์, ํด์ฑ ๊ณ์ฐ์ด ํ์ํ๋ฏ๋ก ๋ฐ๋ก ์ฃผ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ..
์ธ๋ฑ์ค ์ปฌ๋ผ ๊ฒฐ์ ๊ณผ ๊ฐ๊ณต
์กฐ์ํ๋์ ์น์ ํ SQL ํ๋์ ์ฝ๊ณ ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์ธ๋ฑ์ค ์ค์บ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 2 ๊ฐ์ง๋ก ๋๋ ์ ์๋ค. 1. ํ ์ด๋ธ ์ ์ฒด ์ค์บ 2. ์ธ๋ฑ์ค ์ค์บ ํ ์ด๋ธ ์ ์ฒด ์ค์บ์ ๋ง ๊ทธ๋๋ก, ํ ์ด๋ธ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์๋ ๋ธ๋ก ์ ์ฒด๋ฅผ ์ค์บํ๋ค. ์ธ๋ฑ์ค ์ค์บ์ ์ธ๋ฑ์ค๋ก ์ค์ ํ ๊ธฐ์ค์ ๋ฐ๋ผ ์ผ์ ๋์ ์ค์บํ๋ค. โ ์ธ๋ฑ์ค ์ค์บ ๋ฐฉ์์ด ํญ์ ์ ๋ฆฌํ ๊น? ๊ทธ๋ ์ง ์๋ค. ๐ก ์ธ๋ฑ์ค ์ค์บ ๋ฐฉ์์ ํฐ ํ ์ด๋ธ์์ ์๋์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ ์ ํ ๋ ์ ์ฉํ๋ค. ์๋ก, ์ ์ฒด ํ ์ด๋ธ ์ค์บ์ ์งํํ๋ฉด ๋ฒํผ ์บ์์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ์ง ์์ ์, ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ํ์ํ๋ฏ๋ก ์ค๋ ์๊ฐ์ด ์์๋ ์ ์๋ค. ํ์ง๋ง, ํ๋ฒ ๊ฐ์ ธ์ค๊ณ ๋ ๋ค์๋ ํด๋น ํ ์ด๋ธ๊ณผ ๊ด๋ จํ ๋ฐ์ดํฐ๋ ๋ฌผ๋ฆฌ์ I/O ์์ด ํ์ํ ์ ์๋ค. ์ธ๋ฑ์ค ์ค์บ..
SQL ์ฒ๋ฆฌ ๊ณผ์ ๊ณผ I/O
์กฐ์ํ๋์ ์น์ ํ SQL ํ๋์ ์ฝ๊ณ ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. SQL ์ฒ๋ฆฌ ๊ณผ์ SQLํ์ฑ๊ณผ ์ต์ ํ 1๏ธโฃ SQL ํ์ฑ ์ฌ์ฉ์๋ก๋ถํฐ SQL์ ์ ๋ฌ๋ฐ์ผ๋ฉด SQL ํ์๊ฐ ํ์ฑ์ ์งํํ๋ค. ๐ก SQL ๋ฌธ์ ์ด๋ฃจ๋ ๊ฐ๋ณ ๊ตฌ์ฑ ์์๋ฅผ ๋ถ์ํ์ฌ ํ์ฑ ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค. ๐ก ๊ทธ๋ฆฌ๊ณ ์ ๋ฌ ๋ฐ์ SQL ๋ฌธ์์ ๋ฌธ๋ฒ์ ์ค๋ฅ (์ฌ์ฉํ ์ ์๋ ํค์๋ ์ฌ์ฉ ๋ฑ) ๋ ์๋ฏธ์ ์ค๋ฅ(์กด์ฌํ์ง ์๋ ํ ์ด๋ธ ํน์ ์ปฌ๋ผ ์ฌ์ฉ ๋ฑ)๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๋ค. 2๏ธโฃ SQL ์ต์ ํ ๐ก ์ตํฐ๋ง์ด์ ๋ ๋ค์ํ ์คํ ๊ฒฝ๋ก๋ฅผ ์์ฑํด์ ๋น๊ตํ ํ, ๊ฐ์ฅ ํจ์จ์ ์ธ ํ๋๋ฅผ ์ ํํ๋ค. ๊ทธ๋ ๊ฒ ์ ํํ ๊ฒฝ๋ก๋ฅผ ์คํ ๊ฐ๋ฅํ ์ฝ๋ ๋๋ ํ๋ก์์ ํํ๋ก ํฌ๋งทํ ํ๋ค. ์คํ ๊ณํ๊ณผ ๋น์ฉ MySQL ์๋ฒ๋ก ์์ฒญ๋ ์ฟผ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ ๋์ผํ์ง๋ง ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด ..
Chapter 4. ์ค๊ณ ํ์ง๊ณผ ํธ๋ ์ด๋์คํ
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ํ๋ ฅ, ์ฑ ์, ์ญํ ๊ทธ๋ฆฌ๊ณ ์ค๊ณ ํ์ง ํ๋ ฅ์ ๊ฐ์ฒด๋ค ๊ฐ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์งํ๋๋ ์ํธ์์ฉ์ด๋ค. ์ฑ ์์ ๊ฐ์ฒด๊ฐ ์ํํ๋ ํ๋์ด๋ค. ์ญํ ์ ์ฑ ์๋ค์ ์งํฉ์ด๋ค. ํ๋ ฅ, ์ฑ ์, ์ญํ ํ ๋น์ด ์ ๋์ด์ผ ๋ฐ๋์งํ ๊ฐ์ฒด ์งํฅ ์ค๊ณ๊ฐ ๊ฐ๋ฅํด์ง๋ค. ๐ก ๊ทธ ์ค์์๋ ์ฑ ์์ด ์ ํ ๋น๋๋ ๊ฒ์ด ์ค์ํ๋ค. ๐จ ์ญํ ์ ์ฑ ์์ ์งํฉ์ด๊ธฐ ๋๋ฌธ์, ์ฑ ์์ ํ์ง์ ์์กดํ๊ฒ ๋๋ค. ํ๋ ฅ ์ญ์, ์ฑ ์์ด ์ ํ ๋น๋์ง ๋ชปํ๋ฉด ํจ์จ์ ์ผ๋ก ํ ์ ์๊ฒ๋๋ค. โ ์ฑ ์์ ์ด๋ค ์์ผ๋ก ํ ๋นํด์ผํ ๊น? ๋น์ทํ ์ฑ ์๋ผ๋ฆฌ ํ๋์ ๋ชฉ์ ์ ์ํด ํ๋ ฅํ๋ ๊ฒ ๋ผ๋ฆฌ ๋ชจ์๋๋ ๋์ ์์ง๋์ ๋ค๋ฅธ ์ฑ ์๋ผ๋ฆฌ ๋ถ๋ฆฌํ๋ ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ๋ง์กฑํ๋๋ก ํ๋ ๊ฒ์ด ์ข๋ค. ๊ทธ๋์ผ๋ง, ๋ณ๊ฒฝ์ด ์ผ์ด๋ฌ์ ๋..
Chapter 3. ์ญํ , ์ฑ ์, ํ๋ ฅ
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ๊ฐ์ฒด ์งํฅ์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๐ก ์ญํ , ์ฑ ์, ํ๋ ฅ์ด๋ค. ํด๋์ค, ์์, ์ง์ฐ ๋ฐ์ธ๋ฉ๊ณผ ๊ฐ์ ๊ฐ๋ ์ ๊ตฌํ์ ์ด์ ์ด ๋ง์ถ์ด์ ธ ์๊ธฐ ๋๋ฌธ์, ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ด๋ค ํ๋ ฅ์ด ํ์ํ๊ณ ํ๋ ฅ์ ์ํด ์ด๋ค ์ญํ ๊ณผ ์ฑ ์์ด ํ์ํ์ง ๊ณ ๋ฏผ์ ํ๋ ๊ฒ์ด ๋ ์ค์ํ๋ค. 1๏ธโฃ ํ๋ ฅ ๊ฐ์ฒด๋ค์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ํํ๋ ์ํธ์์ฉ์ ๋งํ๋ค. ๋ ๊ฐ์ฒด์ ํ๋ ฅ์, ํ๋์ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ๋์์ ์์ฒญํ ๋ ์์๋๋ค. ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ์์ธํ ๋ด๋ถ ๊ตฌํ์ ์ง์ ์ ๊ทผํ ์ ์์ผ๋ฏ๋ก, ๐ก ๋ฉ์์ง ์ ์ก์ ํตํด ํ๋ ฅํ๋ค. ๋ง์ฝ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌํ์ ์ ๊ทผํ์ฌ ๋์ํ๋ค๋ฉด, ๊ฐ์ฒด์ ์์จ์ฑ์ ํผ์ํ๋ ํ์์ด๋ค. ๋ฐ๋ผ์, ..
Chapter 2. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋, ์ ๋ ํด์ผํ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ด๋ค ํด๋์ค๊ฐ ํ์ํ์ง ๊ณ ๋ฏผํ๊ธฐ ์ ์ ์ด๋ค ๊ฐ์ฒด๋ค์ด ํ์ํ์ง ๊ณ ๋ฏผํด์ผํ๋ค. ์ฝ๋๋ก์ ๋ฐ๋ผ๋ณด๊ธฐ ์ ์ ๊ธฐ๋ฅ์ด ๋์๋๋ ๋ฉ์ปค๋์ฆ์ ์ ์๊ฐํ๋ผ๋ ์๋ฏธ์ธ ๊ฒ ๊ฐ๋ค. ๊ฐ์ฒด๋ฅผ ๊ณ ๋ฆฝ๋ ์กด์ฌ๋ก ๋ฐ๋ผ๋ณด์ง ๋ง๊ณ ํ๋ ฅ์ ์ฐธ์ฌํ๋ ํ๋ ฅ์๋ก ๋ฐ๋ผ๋ณด์์ผ ํ๋ค. ๋ฌด์์ ๊ฒฐํฉ๋๋ฅผ ์ค์ด๋ ค๊ณ ๋ ธ๋ ฅํ๊ธฐ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ํ๋ ฅํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํ๋ ๊ฒ์ด ํ์ํ๋ค. ํด๋์ค์ ๊ฒฝ๊ณ๋ฅผ ์ ๊ตฌ๋ถ ์ง์ด์ผ ํ๋ค. Chapter 1์์๋ ๋ง์ด ์ค๋ช ํ๋ฏ์ด, ๊ฐ์ฒด๋ ์์ ์ ํ๋๋ฅผ ์์ ์ด ๊ด๋ฆฌํ๋๋ก ํด์ผํ๋ฉฐ ๊ทธ๋ฌ๊ธฐ ์ํด์๋ ์บก์ํ๋ฅผ ํตํด ์ธ๋ถ์ ๊ณต๊ฐํ์ง ์๋ ๊ฒ์ด ์ข๋ค. ์ธ๋ถ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ๋ฉ์๋๋ฅผ ํตํด ๊ฐ์ ..
Chapter 1. ๊ฐ์ฒด, ์ค๊ณ
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ๋ณ๊ฒฝ์ ์ทจ์ฝํ ์ฝ๋ public class Theater { private TicketSeller ticketSeller; public Theater(TicketSeller ticketSeller) { this.ticketSeller = ticketSeller; } public void enter(Audience audience) { // ๊ด๋๊ฐ ๊ฐ๋ฐฉ์ ์ด๋๊ถ์ด ์๋ค๋ฉด? if (audience.getBag().hasInvitation()) { Ticket ticket = ticketSeller.getTicketOffice().getTicket(); // ํฐ์ผ ์ ๊ณต audience.getBag().setTicket(ticket..
๋๊ท๋ชจ ํธ๋ํฝ์ ๊ฐ๋นํ ์ ์๋ ์์คํ ์ค๊ณ๋ฅผ ์ํ ๊ธฐ์ด ์ง์
๋์ ๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด ๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๋๊ท๋ชจ ์ฌ์ฉ์๋ฅผ ๊ฐ๋นํ ์ ์๋ ์์คํ ์ ์ค๊ณํ๊ธฐ ์ํ ์ง์๋ค์ ๋ํด์ ์ดํด๋ณด์. ๐ RDBMS vs NoSQL RDBMS๋ ์๋ฃ๋ฅผ ํ ์ด๋ธ๊ณผ ์ด, ์นผ๋ผ์ผ๋ก ํํํ๋ค. ๊ทธ๋ฆฌ๊ณ SQL์ ์ด์ฉํด ํ ์ด๋ธ์ ์๋ ๋ฐ์ดํฐ๋ฅผ, ๊ทธ ๊ด๊ณ์ ๋ฐ๋ผ JOIN ํ์ฌ ํฉ์น ์ ์๋ค. ๐ก ์ ํํ ๋ ์คํค๋ง์ ๋ฐ๋ผ ๊ตฌ์กฐํ๋์ด ์ ์ฅ๋๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ ์ ์๋ค. NoSQL์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ํนํ๋์ด ์๋ค. ๐ก ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๊ฐ ๋น์ ํ์ด๊ฑฐ๋ ์์ฃผ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ์๊ฐ ์์ ๋ ์ฌ์ฉํ๋ฉด ์ข๋ค. ๐ Scale Up vs Scale Out Scale Up ์ ์๋ฒ์ ๊ณ ์ฌ์ ์์์ ์ถ๊ฐํ๋ ํ์์ด๊ณ , Scale ..