JavaRush ํ์๋ค์ ํธ์๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ฅ ์ค์ํ ์ฃผ์ ์ ๊ดํ ๊ฐ์์ ๊ธฐ์ฌ๋ฅผ ์์งํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ดํ ๋ฒ์งธ ์ ํ ํญ๋ชฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SQL ์ฟผ๋ฆฌ ์ธ์ด์ ๊ดํ ๊ฒ์
๋๋ค. ๋ฏธ๋ ๊ฐ์ด๋์์๋ ๊ธฐ์ฌ์ ๋ณธ์ง์ ๊ฐ๋ตํ๊ฒ ์ค๋ช
ํ๊ณ ์์ผ๋ฉฐ, ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด ๊ด์ฌ ์๋ ์ฃผ์ ์ ๋ํด ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค. ๋ถ๋งํฌ์ ์ปฌ๋ ์
์ ์ถ๊ฐํ๊ณ ํ์ํ ๋ ๋ค์ ๋ฐฉ๋ฌธํ์ธ์.
๊ธฐ์ฌ ๋ฐ ๊ฐ์
์ด ๊ธฐ์ฌ์์๋ Java์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํ๋ ๊ธฐ๋ณธ ์ฌํญ๊ณผ SQL ์ธ์ด๋ฅผ ์๊ฐํ๋ ์งง์ ์๋ฆฌ์ฆ๋ฅผ ์์ํฉ๋๋ค. ๋ง์ ํ๋ก๊ทธ๋จ์ด ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๊ณ ์์ ํ๋ฉฐ ์ต์ ์ํ๋ก ์ ์งํ๋๋ผ ๋ฐ์ฉ๋๋ค. ๋ฐ์ดํฐ๋ ํ๋ก๊ทธ๋จ ๋ก์ง์ ๋งค์ฐ ์ค์ํ ๋ถ๋ถ์ด๋ฏ๋ก ์ด๋ฅผ ์ํด ๋ณ๋์ ์ ์ฅ์๊ฐ ํ ๋น๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฐ์ดํฐ๋ ํน์ ์ฟผ๋ฆฌ ์ธ์ด์ธ SQL(๊ตฌ์กฐ์ ์ฟผ๋ฆฌ ์ธ์ด)์ ์ฌ์ฉํ์ฌ ์ก์ธ์คํ๊ณ ์์ ๋ฉ๋๋ค. ์ด ๊ธฐ์ฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด์ ๋ง ์์ํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํ ๊ฒ์
๋๋ค.
ํ
์คํธ์ ๋ ๋ฒ์งธ ๋ถ๋ถ์ SQL ์๊ฐ์ ๊ดํ ๊ฒ์
๋๋ค. ์ฌ๊ธฐ์์ ์ ์๋ ์ฆ๊ถ ๊ฑฐ๋์ ์๋ฎฌ๋ ์ดํฐ ์์ฑ ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ SQL์ ์๋ ์๋ฆฌ๋ฅผ ๊ณ์ ๋ถ์ํฉ๋๋ค.
์์ ๋ง์ ํฌํธํด๋ฆฌ์ค ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๊ดํ ๋๊ท๋ชจ ๊ธฐ์ฌ ์๋ฆฌ์ฆ์
๋๋ค. ๋น์ฐํ ๊ทธ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ํธ ์์ฉํ๋ ๋ค์ํ ๊ธฐ์ ์ ์ดํดํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SQL ์ธ์ด๋ฅผ ํฌํจํฉ๋๋ค. ๊ธฐ์ฌ์ ๊ฒฐ๊ณผ๋ ํ
๋ ๊ทธ๋จ ๋ด์ ์์ฑํ๋ ๊ฒ์
๋๋ค.
๋ ๋ฒ์งธ ๋ถ๋ถ์์ ์ ์๋ ์ค์ต์ ์ค์ ์ ๋์ด MySQL ์ค์น, ์ด ์ธ์ด๋ก ์ฒซ ์ค ์์ฑ ๋ฐ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ์ ๋ํ ์ง์นจ์ ์ ๊ณตํฉ๋๋ค. ๋ง์ง๋ง์๋ ์์ ๋ฅผ ํ๊ฒ ๋ฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถ์์ ์ธ ๋ฒ์งธ ๋ถ๋ถ์์ ์ ์๋ SELECT ์ฐ์ฐ์, WHERE, ORDER BY, GROUP BY ๋งค๊ฐ๋ณ์์ ๋ํด ์ค๋ช
ํฉ๋๋ค. ๋ง์ง๋ง์๋ ์ด์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ ๊ฐ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ๋ค ๋ฒ์งธ ๋ถ๋ถ ์ ์ฒด๋ ์์ ๋ถ์์ ์ ๋
ํฉ๋๋ค. ์ด ๊ธ์ ์ฝ์ด๋ณด์๊ธธ ๊ถํฉ๋๋ค. ์ด ์์
์ ํฅ๋ฏธ๋กญ๊ณ ์ฌ๋ฌ๋ถ๋ ํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค.
๋ค์ฏ ๋ฒ์งธ ๋ถ๋ถ์์ ์ ์๋ ์ฐ๊ฒฐ ๋ฐ ์กฐ์ธ์ ์ ํ์ ๋ํด ์ด์ผ๊ธฐํฉ๋๋ค. ์ผ๋๋ค, ์ผ๋์ผ, ๋ค๋๋ค ๋ฐ ๊ธฐํ ๊ฐ๋
์ด ๋ฌด์์ธ์ง ์ค๋ช
ํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ดํ ์ด ๋ง์ง๋ง ๊ธฐ์ฌ๋ ์ต์ข
์์ ๋ฅผ ๋ค๋ฃจ๊ณ ์์ต๋๋ค. ์ค๊ธ ๋ฉด์ ์ฉ์ด๋ผ ํฅ๋ฏธ๋กญ๋ค์. ์ฆ, ์ด ์์
ํ์๋ ์ด๋ฏธ ์ธํฐ๋ทฐ์ ๊ฐ ์ ์์ผ๋ฉฐ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ จ๋ ๋ด์ฉ ์ค ์ ์ด๋ ์ผ๋ถ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํต๊ณผํ๊ฒ ๋ฉ๋๋ค.
SQL์ ๋ํ ์ด๊ธฐ ํ์ต์ ์ ํฉํ ์ฑ
์ต์
์ด ์์ฒญ๋๊ฒ ๋ง์ง๋ง ์ด ๊ฒ์๋ฌผ์ ์์ฑ์๋ โSQL. ์๋ฆฌ๋ฒ ๋ชจ์โ(Anthony Molinaro). ์ด ์ฑ
์ ํน์ง์ ๊ธฐ๋ณธ์ ์ธ ์์ค์์ SQL์ ๊ณต๋ถํ๋ ๊ฒ ์ธ์๋ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ํ ๋ฒ์ ์ต์ํด์ง๊ณ ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฟผ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง, ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ฅ์ ๋ฌด์์ธ์ง ํ์ธํ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SQL์ ๋ํ ์ผ๋ฐ์ ์ธ ์ดํด์ DBMS์ ๋ํ ์ค๋ฌด ๊ฒฝํ์ด ์๋ ์ฌ๋๋ค์ ์ํด ๊ณ ์๋ Lukas Eder์ ๊ธฐ์ฌ๋ฅผ ๊ฐ์ํ ๋ด์ฉ์ ์ ๊ณตํฉ๋๋ค. ๋ฉํ๋ฐ์ดํฐ(์ฆ, ์ ์ฝ ์กฐ๊ฑด)์ ์ฟผ๋ฆฌ ์์ฒด๋ง์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ ์ ์๋ 5๊ฐ์ง ๊ฐ๋จํ ์ต์ ํ์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
2๋ถ์์๋ EXISTS ํ์ ์ฟผ๋ฆฌ์์ "์๋ฏธ ์๋" ์กฐ๊ฑด์์ ํ๋ก์ ์
์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ์์๋ด
๋๋ค.
๊ธฐ์ฌ์ ์ธ ๋ฒ์งธ ๋ถ๋ถ์ ์ ์ด์ ๋น ์งํฉ์ ๋ณํฉ์ ๋ค๋ฃน๋๋ค.
๋ค ๋ฒ์งธ ๋ถ๋ถ์์๋ CHECK์ ์ ํ ์ฌํญ๊ณผ ๋ถํ์ํ ์ฌ๊ท ์กฐ์ธ์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
๊ธฐ์ฌ์ ๋ง์ง๋ง ๋ถ๋ถ์์๋ ๊ฐ์ฒด ํธ์์ ๊ฐ์ ์ต์ ํ์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
๋ฐฑ์๋ ๊ฐ๋ฐ ๋ฐ ๋น
๋ฐ์ดํฐ์ ์ถ์ธ๋ฅผ ๋ฐ๋ผ์๋ค๋ฉด ์๋ง๋ ์ต๊ทผ ๋ช ๋
๋์ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์๋ฌธ์ ์ด๋ฏธ ์์์ฐจ๋ ธ์ ๊ฒ์
๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ์ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ๋ง๋ค์ด์ก๋์ง, ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ ๊ทธ๋ ๊ฒ ๋ง์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ฐ์๊ธฐ ํ์ํ์ง์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
์๋ง๋ ํจ๊ณผ์ ์ธ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ธ๋ฑ์ฑ์ผ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ๋ ๋ฒ์งธ๋ ๋ง์ SQL ํด๋ผ์ด์ธํธ๊ฐ "๋ถํ์ํ์ง๋ง ํ์ํ ์์
"์ ๋ง์ด ์ํํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์๋ก ํ๋ค๋ ์ฌ์ค์
๋๋ค. ์ด๊ฒ์ด ๋ฌด์์ธ์ง๋ ์ด ๊ธฐ์ฌ์์ ๋
ผ์ํ ๊ฒ์
๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ Rest ์ ํ๋ฆฌ์ผ์ด์
์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ผ๋ จ์ ๊ธฐ์ฌ์
๋๋ค.
๋ง์ง๋ง ๋ถ๋ถ์์๋ ์ปดํจํฐ์ PostgresSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค์นํ๊ณ , pgAdmin์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๊ณ , ๊ทธ ์์ ํ
์ด๋ธ์ ์๋ ๋ฐ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์์ฑ ๋ฐ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์ด ๋ถ๋ถ์์ ์ ์๋ ๋
์๋ค์๊ฒ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ
์ด๋ธ์ ์ฌ์ฉํ์ฌ ์์
ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์๋๋ก ํ๋ก๊ทธ๋จ์ ๋ค์ ์์ฑํ๋๋ก ๊ถ์ ํฉ๋๋ค.
์ด ๊ธฐ์ฌ์์ ์ ์๋ ๊ธฐ์ ์ธํฐ๋ทฐ์ ํต์ฌ ์ฃผ์ ์ค ํ๋์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ์ด์ผ๊ธฐํฉ๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ง๋ฌธ์ ์ดํด๋ณด๊ณ ์๋ฃ๋ฅผ ๊น์ด ๋ค๋ฃจ์ง ์๊ณ ๋ต๋ณ์ ์๋ํฉ๋๋ค.
Hibernate๋ ํ๋ก๊ทธ๋๋จธ์ ์ถ์ ๋ ์ฝ๊ฒ ๋ง๋ค๊ธฐ ์ํด ๊ณ ์๋ ํ๋ ์์ํฌ์
๋๋ค. ์ค๋ณต ์ฝ๋๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฆฌ์์ค ๊ด๋ฆฌ์ ํ์ํ ์ฝ๋๋ฅผ ์จ๊ฒจ ์ค๋ฅ๋ฅผ ์ค์
๋๋ค. Hibernate๋ก ์์
ํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Hibernate๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ ๋ ์ด๋ํฐ ์ญํ ์ ํฉ๋๋ค. ์ด ํ๋ ์์ํฌ์ ๋ํ ์์์ ์ด ํ๋ ์์ํฌ๊ฐ ํ์ํ ํ๋ก์ ํธ์ ๋ํ ๊ธฐ์ฌ๋ฅผ ์ฝ์ด๋ณด์ธ์.
๋น๋์ค
Java ๊ฐ๋ฐ์ ๋ฐฑ์๋์ ๋ถ๊ฐ๋ถ์ ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฑ์๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํจ๊ป ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ดํด ์ง๋ฌธ์ ๋ฐ์ ์ ์๋ ๊ธฐ์ ์ธํฐ๋ทฐ์์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์ถ์ง ์๋ค๋ฉด Podlodka Backend Crew ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์คํธ ์ธํฐ๋ทฐ ์คํธ๋ฆผ์ ์์ฒญํ์ธ์. SQL, NoSQL, NewSQL๊ณผ ๊ฐ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๊ฐ์ ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ํน์ ๊ธฐ์ ์๋ฃจ์
์์
์ด๋ก ์ ๋ฐฐ์ฐ๊ฒ ๋ฉ๋๋ค.
MongoDB DBMS๋ฅผ ์ฌ์ฉํ์ฌ IntelliJ IDEA ํ๋ก์ ํธ๋ฅผ Amazon Web Services ํด๋ผ์ฐ๋์ ์ฐ๊ฒฐํ๋ ค๋ฉด IDE ๊ธฐ์ ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๊ฐ๋ฐ ํ๊ฒฝ ์ธ์๋ ๋๊ธฐ์ ๋๋ ๋น๋๊ธฐ์ MongoDB ๋๋ผ์ด๋ฒ, MongoClient ํด๋ผ์ด์ธํธ๋ฅผ ์๋ํ๋ ๋ฐฉ๋ฒ๊ณผ ์ปฌ๋ ์
์์
๋ฐฉ๋ฒ๋ ๋ฐฐ์์ผ ํฉ๋๋ค. ์ด ๋น๋์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ Java ํ๋ก์ ํธ์ ์ฐ๊ฒฐํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์๋ดํฉ๋๋ค. ๋์์ ์๋ ์ค๋ช
์๋ IntelliJ IDEA์ ํ๋ก์ ํธ ์ฝ๋์ ๋ํ ๋งํฌ๊ฐ ์์ต๋๋ค.
์๋ฆฌ์ฆ์ ๊ธฐํ ์๋ฃ: |
|
GO TO FULL VERSION