๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์ ์์คํ ๋น๊ต ๋ฐ โโ์ ํ
๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ค์ ๋ณ๊ฒฝ๋๋ ๊ฒฝํฅ์ด ์์ผ๋ฉฐ ์ด๋ ์์ ์์๋ ๋ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ์นํ์ง ์์ต๋๋ค. ๋ฌผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํ๋ฉด ORM์ด ๋ชจ๋ธ๊ณผ ์ผ์นํ๋ ์ ๋ฒ์ ์ ์์ฑํ ์ ์์ง๋ง ์ด ์ ์ฐจ๋ฅผ ์ํํ๋ฉด ๊ธฐ์กด ๋ฐ์ดํฐ๊ฐ ์์ค๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ง์ด๊ทธ๋ ์ด์
์์คํ
์ ๊ธฐ๋ฅ์ ์คํค๋ง ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๊ธฐ์กด ๋ฐ์ดํฐ ์์ค ์์ด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ๋๊ธฐํ๋๋๋ก ํ๋ ๊ฒ์
๋๋ค.
์ด ๊ธฐ์ฌ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ค์ํ ๋๊ตฌ๋ฅผ ์ดํด๋ณด๊ณ ์ ํฉ๋๋ค. ์ด ๋ฆฌ๋ทฐ๊ฐ ๋น์ทํ ์ ํ์ ์ง๋ฉดํ ๊ฐ๋ฐ์์๊ฒ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
ํ์คํฌ
์ฐ๋ฆฌ ํ์ฌ๋ ํ์ฌ ์ฐจ์ธ๋ ์ ํ์ธ Docs Security Suite(DSS)๋ฅผ ์ ๊ทน์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ์๋ฒ ๋ถ๋ถ์ .Net Core๋ก ์์ฑํ๊ณ , DBMS๋ก๋ Entity Framework Core๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ธํ ๋ ์ฐ๋ฆฌ๋ Code First ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ ๋๋ฉ์ธ ๋ชจ๋ธ์ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์์ ์์ฑํฉ๋๋ค. ๊ฐ ๊ฐ๋ฐ์๋ ์์คํ ์ ์์ฒด ๋ ผ๋ฆฌ์ ๋ถ๋ถ์ ๋ด๋นํฉ๋๋ค.
์ด์ ์ธ๋์ DSS๋ ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ ์์คํ ์ผ๋ก ํด๋์ EF 6(Entity Framework ๋ง์ด๊ทธ๋ ์ด์ )์ ์ฌ์ฉํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ํ ์ผ๋ถ ๋ถ๋ง์ด ์์์ต๋๋ค. ๊ฐ์ฅ ํฐ ์ด์ ๋ EF์ ๋ฒ์ ์ถฉ๋์ ํด๊ฒฐํ๋ ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๋ฐฉ์์ด ๋ถ์กฑํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ์ฌ์ค์ ์ง์์ ์ผํ์ผ๋ก ๋ฒ๊ทธ๋ฅผ ์์ ํ ๋ ์ฌ์ ํ ์ฐ๋ฆฌ๋ฅผ ๋นํฉํ๊ฒ ํ๋ฏ๋ก ์ฐ๋ฆฌ๋ ๋์ฒด ์ต์ ์ ๊ณ ๋ คํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๋ ผ์ ๊ฒฐ๊ณผ, ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ ์์คํ ์ ๋ํ ๋ค์๊ณผ ๊ฐ์ ์๊ตฌ ์ฌํญ์ด ํ์ฑ๋์์ต๋๋ค.
- ๋ค์ํ DBMS๋ฅผ ์ง์ํฉ๋๋ค. MS SQL Server, PostgreSQL, Oracle์ด ํ์ํ์ง๋ง ์ ์ฌ์ ์ผ๋ก ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
- ORM์ผ๋ก ์์ ํฉ๋๋ค. ์ฒ์์๋ EF Core๋ฅผ ์ฌ์ฉํ ๊ณํ์ด์์ง๋ง ์ค๊ณ ๋จ๊ณ์์๋ ๋ค๋ฅธ ORM์ ๊ณ ๋ คํ ์ค๋น๊ฐ ๋์์ต๋๋ค.
- ๋ง์ด๊ทธ๋ ์ด์ ์๋ ์์ฑ. Code First์ ๊ฐ๋ฐ์ ๊ณ ๋ คํ์ฌ ๋ง์ด๊ทธ๋ ์ด์ ์ "์ง์ ์์ฑ"ํ ํ์๊ฐ ์๋๋ก ํ๊ณ ์ถ์ต๋๋ค.
- ๋ฒ์ ์ถฉ๋. ๋ถ์ฐ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ๋ณํฉ ์ EF Core๊ฐ ์ถฉ๋ํ ์ ์์ต๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๋ถ๋ถ์ด ์๋ก ๋ค๋ฅธ ๊ฐ๋ฐ์์ ์ํด ์์ฑ๋๋ฏ๋ก ๊ฐ ๋ถ๋ถ์ ๋ง์ ์๊ฐ์ ์๋นํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค.
- ๊ณ ๊ธ ๋ฌธ์ํ ๋ฐ ์ง์. ์ฌ๊ธฐ์๋ ์ค๋ช ์ด ํ์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
- ๋ฌด๋ฃ. ๊ธฐ์ค์ ์กฐ๊ฑด๋ถ์ ๋๋ค. ์์คํ ์ ๊ทธ๋ค์ง ๋น์ธ์ง๋ ๋น์ธ์ง๋ ์์ง๋ง ํธ์์ฑ ์ธก๋ฉด์์ ์ด์์ ์ด๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ๊ณ ๋ คํ ์ค๋น๊ฐ ๋์ด ์์์ต๋๋ค.
์ฝ๊ฐ์ ์ฐ๊ตฌ ๊ฒฐ๊ณผ ๋ค์๊ณผ ๊ฐ์ ์ต์ ์ด ๋ฐ๊ฒฌ๋์์ผ๋ฉฐ ๊ณ ๋ คํด์ผ ํ ๋ฐ๋์งํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
- EF ์ฝ์ด ๋ง์ด๊ทธ๋ ์ด์
- DBup
- ๋ผ์ด๋ํ์ฐ์คE
- ThinkingHome.Migrator
- ์ ์ฐฝํ ๋ง์ด๊ทธ๋ ์ด์
์ด์ ์ข ๋ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๋น์ฐํ ์ด๊ฒ์ด ์ ํํ ์ฒซ ๋ฒ์งธ์ด์ ์ฃผ์ ์ต์ ์ด์์ต๋๋ค. ํฌ๋ฒ๋ฆฐ์ ๋ง์ง์๊ฑฐ๋ฆฌ์ง ์๊ณ ๋ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ณธ ์ ๊ธฐ์ ๋๋ค. ๋ง์ ์์ ๋ฌธ์, ๊ณต์ ์ฌ๋ถ, ๋จ์์ฑ ๋ฑ ๊ทธ๋ฌ๋ ํด๋์ EF์ ๋ํ ๋ถ๋ง ์ฌํญ์ EF Core์๋ ์๋นํ ๊ด๋ จ์ด ์์ต๋๋ค.
๋ฐ๋ผ์ EF Core์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Microsoft ์ง์, ๋ฌธ์(๋ฌ์์์ด ํฌํจ), ๋๊ท๋ชจ ์ปค๋ฎค๋ํฐ
- CodeFirst ๊ธฐ๋ฐ ๋ง์ด๊ทธ๋ ์ด์ ์๋ ์์ฑ
- EF 6๊ณผ ๋น๊ตํ์ฌ EF Core๋ ๋ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๋ ์ท์ ์ ์ฅํ์ง ์์ต๋๋ค. Code First์์ EF Core๋ก ์์ ํ ๋ ๋ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐฐํฌํ ํ์๊ฐ ์์ต๋๋ค.
- Code First์์ ์ถค์ ์ถ๊ณ ์๊ธฐ ๋๋ฌธ์ ํ์ํ ๋ชจ๋ ๋ฐ์ดํฐ ์ก์ธ์ค ๊ณต๊ธ์๋ก ํ ๋ฒ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๊ณต๊ธ์์ ๊ฒฝ์ฐ PostgreSQL์ ์ง์ํ๊ณ Oracle์ ์ง์ํ๋ฉฐ MS SQL Server๊น์ง ์ง์ํฉ๋๋ค ๏
๊ทธ๋ฆฌ๊ณ ๋จ์ ๋ ์์ต๋๋ค:
- ๊ฐ๋ฑ ํด๊ฒฐ์ ๋์ผํ ์์ค์ผ๋ก ์ ์ง๋์์ต๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์์๋ฅผ ์ง์ ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ ์ท์ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
- ๋ง์ด๊ทธ๋ ์ด์ ์ด ์์ฑ๋๋ ๋ชจ๋ธ์ ๋ํ ์ข ์์ฑ
DbUp
DbUp์ NuGet์ ์ํด ์ค์น๋๊ณ ๋ณ๊ฒฝ ์ฌํญ์ SQL Server์ ํธ์ํ๋ ๋ฐ ๋์์ด ๋๋ .NET ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ด๋ฏธ ์คํ๋ ๋ณ๊ฒฝ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ์ ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ฐ์ดํธ์ ํ์ํ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ASP.NET์ ์คํ ์์ค ๋ธ๋ก๊ทธ ์์ง ํ๋ก์ ํธ์์ ์ฑ์ฅํ์ผ๋ฉฐ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ์กด์ฌํ๋ฉฐ ์ฝ๋๋ GitHub์ ์์ต๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ T-SQL์ ์ฌ์ฉํ์ฌ ์ค๋ช ๋ฉ๋๋ค.
์ฅ์ ์ ๋ฌด์์ ๋๊น?
- ๋ค์์ DBMS ์ง์(MS SQL Server, PstgreSQL, MySQL)
- ์คํฌ๋ฆฝํธ๋ T-SQL๋ก ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋จ์ํด ๋ณด์ ๋๋ค.
- SQL์ ์ฌ์ฉํ์ฌ ์ถฉ๋๋ ํด๊ฒฐ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋จ์ :
- ์ง์๋๋ DBMS๊ฐ ๋ค์ํ๊ธฐ ๋๋ฌธ์ Oracle์ ๊ทธ์ค ํ๋๊ฐ ์๋๋๋ค.
- ORM๊ณผ ์ํธ ์์ฉํ์ง ์์ต๋๋ค.
- T-SQL ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋ชฉํ๋ก ํ๋ ๊ฒ์ด ์๋๋๋ค.
- ๋ฌธ์์ ์ปค๋ฎค๋ํฐ๋ ๊ทธ์ ๊ทธ๋ ์ต๋๋ค. ๋น๋ก SQL ์คํฌ๋ฆฝํธ ์์ฑ ์ธก๋ฉด์์๋ ํ์ํ์ง ์์ ์๋ ์์ต๋๋ค.
๋ผ์ด๋ํ์ฐ์คE
์ด์ ๋๊ตฌ์ ๋ง์ฐฌ๊ฐ์ง๋ก Apache 2.0 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋๋ ์ด ๋ง์ด๊ทธ๋ ์ด์ ๊ด๋ฆฌ ๋๊ตฌ๋ T-SQL ๋ง์ด๊ทธ๋ ์ด์ ์์ง์์ ์คํ๋ฉ๋๋ค. ์๋ฌด๋๋ ๊ฐ๋ฐ์๋ค์ ํธ์ํ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๊ธฐ๋ณด๋ค๋ DBMS ์ง์๊ณผ ๊ด๋ จ๋ ๊ธฐ์ ์ ๋ฌธ์ ํด๊ฒฐ์ ์ฐ์ ์ํ ๊ฒ ๊ฐ์ต๋๋ค.
์ฅ์ :
- ํ์ํ DBMS ์ง์(Oracle ํฌํจ)
๋จ์ :
- Oracle(์ฐ๋ฆฌ์ ๊ด๋ จ ์๋ Access๋ ๋ฌผ๋ก )์ .NET Core์์ ์ง์๋์ง ์๊ณ .NET Full Framework์์๋ง ์ง์๋ฉ๋๋ค.
- ORM์์๋ ์๋ํ์ง ์์ต๋๋ค
- ์ด์ ๋๊ตฌ๋ณด๋ค ๋ฌธ์๊ฐ ํจ์ฌ ์ ์ต๋๋ค.
- ๋ค์ ๋งํ์ง๋ง ๋ง์ด๊ทธ๋ ์ด์ ์ ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ฉ๋๋ค.
ThinkingHome.Migrator
MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋๋ .NET Core ํ๋ซํผ์ผ๋ก ๋ฒ์ ์ด ์ง์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์
์ ์ํ ๋๊ตฌ์
๋๋ค.
์ฅ์ :
- .NET Core์ฉ์ผ๋ก ์ค๊ณ๋จ
- ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ถ๊ธฐ ์์๋ฅผ ๊ตฌํํ์ต๋๋ค.
- ๋ง์ด๊ทธ๋ ์ด์ ๋ก๊น ๊ตฌํ
๋จ์ :
- XNUMX๋ ์ ์ ๋ง์ง๋ง์ผ๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค. ๋ถ๋ช ํ ํ๋ก์ ํธ๊ฐ ์ง์๋์ง ์์ต๋๋ค
- Oracle์์๋ ์ง์๋์ง ์์ต๋๋ค(๋ฌธ์์๋ .NET Core์ ๋ํ ์์ ์ ์ธ ๊ตฌํ์ด ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ๋ช ์๋์ด ์์ง๋ง ์ด๋ XNUMX๋ ์ ์ ๋๋ค).
- ๋ง์ด๊ทธ๋ ์ด์ ์๋ ์์ฑ ์์
์ ๋ฐ์ ์ผ๋ก ์ด ํ๋ก์ ํธ๋ ํนํ ๊ฐ๋ฐ์ ๊ฒฝ์ฐ ์ ๋งํด ๋ณด์ด์ง๋ง ์ฐ๋ฆฌ๋ ์ง๊ธ ์ฌ๊ธฐ์ ๊ฒฐ์ ์ ๋ด๋ ค์ผ ํ์ต๋๋ค.
์ ์ฐฝํ ๋ง์ด๊ทธ๋ ์ด์
๋ง์ ํฌ์ ๋ณด์ ํ๊ณ ์๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ์ ๋๋ค. Apache 2.0 ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. ์ค๋ช ์ ๋ช ์๋ ๋๋ก ์ด๋ Ruby on Rails ๋ง์ด๊ทธ๋ ์ด์ ๊ณผ ์ ์ฌํ .NET์ฉ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ์์ํฌ์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ C# ํด๋์ค์ ์ค๋ช ๋์ด ์์ต๋๋ค.
์ฌ๊ธฐ์๋ ์ฅ์ ์ด ์์ต๋๋ค.
- ํ์ DBMS ์ง์
- .NET ์ฝ์ด ์ง์
- ๋๊ท๋ชจ ๊ฐ๋ฐ ์ปค๋ฎค๋ํฐ
- ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ ์ถฉ๋์ ์์ฐจ์ ์ผ๋ก ํด๊ฒฐ๋ฉ๋๋ค. ์ฆ, ๋ง์ด๊ทธ๋ ์ด์ ์คํ ์์๊ฐ ์ง์ ๋ฉ๋๋ค. ๋ํ, ํ๋์ ์ํฐํฐ ์ฃผ์์ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ์ฝ๋๋ฅผ ๋ณํฉํ ๋ ๋๋จธ์ง ์ฝ๋์ ๋์ผํ ๋ฐฉ์์ผ๋ก ํด๊ฒฐ๋ฉ๋๋ค.
- ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ฑ๊ณตํ ํ์ ์คํ๋๋ ํ๋กํ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋น์ค ๊ธฐ๋ฅ์ ์ํํ ์ ์์ต๋๋ค. ๋ง์ง๋ง ์ ๋ฐ์ดํธ๋ ํ ๋ฌ ์ ์ด์์ต๋๋ค. ์ฆ, ํ๋ก์ ํธ๊ฐ ์ด์์์ต๋๋ค.
๋จ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ง์ด๊ทธ๋ ์ด์ ์๋ ์์ฑ ์์
- EF ๋ชจ๋ธ๊ณผ ์ฐ๊ฒฐ๋์ง ์์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ ์ท ์์
์ฐ๋ฆฌ์ ์ ํ์ ๋ฌด์์ด์๋์?
์ด๋ค ๋
ผ์์ ๋ง์ด๊ทธ๋ ์ด์
์๋ ์์ฑ๊ณผ ๊ฑด์ ํ ๊ฐ๋ฑ ํด๊ฒฐ์ด๋ผ๋ ๋ ๊ฐ์ง ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ฌ์ผ๋ก ์งํ๋์์ต๋๋ค. ๋ค๋ฅธ ์์ธ๋ค์ ํจ์ฌ ๋ ๋ฌด์์ ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ๋
ผ์ ๊ฒฐ๊ณผ๋ฅผ ํ ๋๋ก ํ์์๋ ์ ํ๋ก์ ํธ์ Fluent Migrator๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์์ผ๋ก ๊ฐ๋ฑ์ ํด๊ฒฐํ๋ฉด ํจ์ฌ ๋ ๋ง์ ์ด์ ์ ์ป์ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์กฐ์ฌ ๊ฒฐ๊ณผ
๋ฌผ๋ก ์๋ฒฝํ ๋๊ตฌ๋ ์์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ ํ์ ํ๊ธฐ ์ํด '์ํ๋ ๊ฒ'์ ์ฐ์ ์์๋ฅผ ์ ํด์ผ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ํ ๋ฐ ๊ธฐํ ์์
์ ๊ฒฝ์ฐ ๋ค๋ฅธ ์์๊ฐ ๊ฒฐ์ ์ ์ผ ์ ์์ต๋๋ค. ์ด ๊ธฐ์ฌ๊ฐ ๊ทํ์ ์ ํ์ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ถ์ฒ : habr.com