์ผ์์ ์ธ ์์ ์ ๊ณ์ํด์ ๋ฐ๋ณตํ๊ณ ์ถ์ต๋๊น? ๊ทธ๋์ ๋๋ํ์ง ์์ต๋๋ค. ํ์ง๋ง Rostelecom ์คํ ๋ฆฌ์ง๋ก ์์ ํ ๋๋ง๋ค SQL ํด๋ผ์ด์ธํธ์์ ํ ์ด๋ธ ๊ฐ์ ๋ชจ๋ ์กฐ์ธ์ ์๋์ผ๋ก ๋ฑ๋กํด์ผ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ 90%์ ๊ฒฝ์ฐ ํ ์ด๋ธ ์กฐ์ธ์ ์ํ ํ๋์ ์กฐ๊ฑด์ด ์ฟผ๋ฆฌ๋ง๋ค ์ผ์นํ๋ค๋ ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ ๊ทธ๋ ์ต๋๋ค! ๋ชจ๋ SQL ํด๋ผ์ด์ธํธ์๋ ์๋ ์์ฑ ๊ธฐ๋ฅ์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ ์ฅ์์ ๊ฒฝ์ฐ ํญ์ ์๋ํ๋ ๊ฒ์ ์๋๋๋ค. ์ฑ๋ฅ ํฅ์์ ์ํด ๊ณ ์ ์ ์ฝ ์กฐ๊ฑด๊ณผ ์ธ๋ ํค๋ฅผ ๊ฑฐ์ ํฌํจํ์ง ์์ผ๋ฉฐ, ์ด๊ฒ์ด ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์ ์ํฐํฐ๊ฐ ๊ฐ ํด๋ผ์ด์ธํธ์ ์ด๋ป๊ฒ ๊ด๋ จ๋์ด ์๋์ง ์ ์ ์์ต๋๋ค. ๊ธฐํ ๋ฐ ๊ทธ๊ฒ์ด ๊ทํ์๊ฒ ์ ๊ณตํ ์ ์๋ ๊ธฐ๋ฅ.
๊ฑฐ๋ถ, ๋ถ๋
ธ, ํ์, ์ฐ์ธ์ฆ์ ๊ฒช๊ณ ์์ฉ์ ๊ฐ๊น์์ง ํ ์ ๋ ๋ธ๋์ญ์ผ๋ก ์๋ ์ฑ์ฐ๊ธฐ๋ฅผ ์ง์ ๊ตฌํํ๊ณ ์ฌ๋ฐ๋ฅธ ๋ฐฉ์์ผ๋ก ์ํํด ๋ณด๋ ๊ฒ์ด ์ด๋ป๊ฒ ์ต๋๊น? ์ ๋ Java๋ก ์์ฑ๋ dbeaver ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ฌ๊ธฐ์๋ ์คํ ์์ค ์ปค๋ฎค๋ํฐ ๋ฒ์ ์ด ์์ต๋๋ค. ๊ฐ๋จํ ๊ณํ์ด ์ฑ์ํด์ก์ต๋๋ค.
- ์๋ ์์ฑ์ ๋ด๋นํ๋ ์์ค ์ฝ๋์์ ํด๋์ค๋ฅผ ์ฐพ์ต๋๋ค.
- ์ธ๋ถ ๋ฉํ๋ฐ์ดํฐ๋ก ์์ ํ๊ณ ๊ฑฐ๊ธฐ์์ ์กฐ์ธ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋๋ก ๋ฆฌ๋๋ ์ ํฉ๋๋ค.
- ???
- ์ด์ต
๋๋ ์ฒซ ๋ฒ์งธ ์์ ์ ๊ฝค ๋นจ๋ฆฌ ์์๋์ต๋๋ค. ๋ฒ๊ทธ ์ถ์ ๊ธฐ์์ ์๋ ์์ฑ์ ์กฐ์ ํ๋ผ๋ ์์ฒญ์ ์ฐพ์๊ณ ๊ด๋ จ ํญ๋ชฉ์์
json์ผ๋ก ์์
ํ๊ธฐ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๊ฒฐ๊ตญ ๋น๋ ์ค๋ฅ๋ฅผ ์์ ํ์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ pom.xml์ด ์๋ ๋งค๋ํ์คํธ.mf ๋งค๋ํ์คํธ์ ๋ฑ๋กํ๊ณ OSGI์์ ์๊ตฌํ๋ ๋๋ก import-package๋ก ์ง์ ํ์ต๋๋ค. ๊ฐ์ฅ ์๋ฆ๋ค์ด ์๋ฃจ์ ์ ์๋์ง๋ง ์๋ํฉ๋๋ค. ๊ทธ๋ฌ์ ๋ค์ ๋๋ผ์์ด ๋ํ๋ฌ์ต๋๋ค. Intellij Idea์์ ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ Eclipse ํ๋ซํผ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ํธ ๋๋ฒ๊น ์ ์์ํ ์๋ ์์ต๋๋ค. ๊ฒฝํ์ด ์๋ ๊ฐ๋ฐ์๋ ์ฟผ๋ฆฌ ์๋ฃ๊ฐ ์๋ ๋ถ์๊ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ณ ํต์ ๊ฒช์ด์ผ ํฉ๋๋ค. ๋น๋ฒ ๊ฐ๋ฐ์๋ค์ด ์ง์ ๊ตฌ์ถํ์ฌ ์ํค์ ์ํํด์ผ ํ ํฌ๋ฒ๋ฆฐ๊ณผ ํจ๊ป ์ถค์ ์ถ๋ ๋ชจ๋ ๊ฒ์ ํ์ํ์ต๋๋ค. ๊ฐ์ฅ ์ง์ฆ๋๋ ์ ์ ์ด๋ฌํ ๋ชจ๋ ์ค์ฟผํธ ํ์๋ ํ๋ก์ ํธ๊ฐ import-package๋ฅผ ํตํด ์ฐ๊ฒฐ๋ json ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฒ๊ทธ์์ ์์๋๊ธฐ๋ฅผ ์ํ์ง ์์๋ค๋ ๊ฒ์ ๋๋ค(์์ง ์์ ํ์ ์ฑ๊ณต์ ์ผ๋ก ์ด์ ๋ธ๋์๋ค๋ ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ ).
๊ทธ ๋ฌด๋ ต ๋๋ ์์ ์ json์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ถํธํ๋ค๋ ๊ฒ์ ์ด๋ฏธ ๊นจ๋ฌ์์ต๋๋ค. ๊ฒฐ๊ตญ ๋ฉํ๋ฐ์ดํฐ๋ ์๋์ผ๋ก ํธ์งํด์ผ ํ๊ณ xml ํ์์ด ์ด์ ๋ ์ ํฉํ์ต๋๋ค. xml์ ์ ํธํ๋ ๋ ๋ฒ์งธ ์ฃผ์ฅ์ JDK์ ํ์ํ ๋ชจ๋ ํด๋์ค๊ฐ ์กด์ฌํ๋ฏ๋ก ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ธ์์ ๋ฉ์ถ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋งค์ฐ ๊ธฐ์๊ฒ๋ ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ json์์ xml๋ก ์ ์กํ๊ณ ์๋ ์์ฑ ๋ ผ๋ฆฌ๋ฅผ ํธ์งํ๊ธฐ ์์ํ์ต๋๋ค.
๋ฉํ๋ฐ์ดํฐ ์์
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tableRelations>
<tableRelation>
<leftTable>dim_account</leftTable>
<rightTable>dim_partner</rightTable>
<joinColumnPair leftColumn="partner_key" rightColumn="partner_key"/>
<joinColumnPair leftColumn="src_id" rightColumn="src_id"/>
</tableRelation>
<tableRelation>
<leftTable>dim_account</leftTable>
<rightTable>dim_branch</rightTable>
<joinColumnPair leftColumn="src_id" rightColumn="src_id"/>
<joinColumnPair leftColumn="branch_key" rightColumn="branch_key"/>
</tableRelation>
</tableRelations>
๊ทธ ๊ฒฐ๊ณผ ๋๋
์ฝ๋๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ์ง๋ฌธ์ด ์๊ฒผ์ต๋๋ค. ๋๊ฐ ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ๋ก ์ฑ์ธ ๊ฒ์ธ๊ฐ? ์ ์ฅ์์๋ ๋ง์ ์ํฐํฐ๊ฐ ์์ผ๋ฏ๋ก ๋ชจ๋ ์ฐ๊ฒฐ์ ์ง์ ๋ฑ๋กํ๋ ๋ฐ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ๋ ์ด ์์ ์ ๋๋ฃ ๋ถ์๊ฐ๋ค์๊ฒ ๋งก๊ธฐ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ํ๋ก๊ทธ๋จ์ด ์๋ ๋ก์ปฌ ๋๋ ํฐ๋ฆฌ์ ์ฒดํฌ์์์ด ์ด๋ฃจ์ด์ง๋ svn์ ๋ฉํ๋ฐ์ดํฐ ํ์ผ์ ๊ฒ์ํ์ต๋๋ค. ์์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ ์ฅ์์ ์ ์ํฐํฐ๊ฐ ๋ํ๋ฉ๋๊น? ํ ๋ถ์๊ฐ๋ ํ์ผ์ ๊ฐ๋ฅํ ์กฐ์ธ์ ์ ๋ ฅํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํ๋ฉฐ ๋๋จธ์ง๋ ์ค์ค๋ก ํ์ธํ๊ณ ์๋ ์์ฑ ๊ธฐ๋ฅ(์ปค๋ฎค๋ํฐ, ์ง์ ์ถ์ ๋ฑ)์ ์ฆ๊น๋๋ค. ๋๋ฃ๋ฅผ ์ํ ํ๋ก๊ทธ๋จ ์ฌ์ฉ์ ๋ํ ์ํฌ์์ ์งํํ๊ณ Confluence์ ๊ธฐ์ฌ๋ฅผ ์ผ์ต๋๋ค. ์ด์ ํ์ฌ์๋ ํธ๋ฆฌํ ๋๊ตฌ๊ฐ ํ๋ ๋ ์๊ฒผ์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ์์
ํ๋ฉด์ ์คํ ์์ค ํ๋ก์ ํธ๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ ๋๋ ค์ํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์คํ ์์ค ํ๋ก์ ํธ๋ ๋ช
ํํ ์ํคํ
์ฒ๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉฐ ์ธ์ด์ ๋ํ ๊ธฐ๋ณธ ์ง์๋ง์ผ๋ก๋ ์คํ์ ์ถฉ๋ถํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์ ๋ ๋๊ธฐ๋ฅผ ๊ฐ์ง๋ฉด ์ซ์ดํ๋ ์ผ์์ ์ธ ์์
์ ์ ๊ฑฐํ์ฌ ์๋ก์ด ์คํ์ ์ํ ์๊ฐ์ ์ ์ฝํ ์๋ ์์ต๋๋ค.
์ถ์ฒ : habr.com